std::source_location
Definido en el archivo de encabezado <source_location>
|
||
struct source_location; |
(desde C++20) | |
La clase source_location
representa cierta información acerca del código fuente, tales como nombres de archivo, números de línea, y nombres de función. Previamente, las funciones que deseaban obtener esta información acerca del punto de llamada (para registrar, probar o propósitos de depuración) tenían que usar macros para que las macros predefinidas, como __LINE__ y __FILE__, se expandieran en el contexto del llamante. La clase source_location
proporciona una mejor alternativa.
source_location
cumple con los requerimientos DefaultConstructible, CopyConstructible, CopyAssignable y Destructible. Un l-valor de source_location
cumple con el requerimiento Swappable.
Además, las siguientes condiciones son verdaderas:
- std::is_nothrow_move_constructible_v<std::source_location>,
- std::is_nothrow_move_assignable_v<std::source_location>, y
- std::is_nothrow_swappable_v<std::source_location>.
Se pretende que source_location
tenga un tamaño pequeño y pueda copiarse eficientemente.
No está especificado si los constructores de copia/movimiento y los operadores de asignación de copia/movimiento de source_location
son triviales y/o constexpr
.
Contenido |
[editar] Funciones miembro
Creation | |
Construye un nuevo objeto de tipo source_location con valores definidos por la implementación. (función miembro pública) | |
[estático] |
Construye un nuevo objeto de tipo source_location correspondiente a la ubicación del sitio de llamada. (función miembro estática pública) |
Acceso a campos | |
Devuelve el número de línea representada por este objeto. (función miembro pública) | |
Devuelve el número de columna representado por este objeto. (función miembro pública) | |
Devuelve el nombre del archivo representado por este objeto. (función miembro pública) | |
Devuelve el nombre de la función representada por este objeto, si es que la hay. (función miembro pública) |
[editar] Ejemplo
#include <iostream> #include <string_view> #include <source_location> void log(std::string_view message, const std::source_location& location = std::source_location::current()) { std::cout << "info:" << location.file_name() << ":" << location.line() << " " << message << '\n'; } int main() { log("Hola, mundo!"); }
Posible salida:
info:main.cpp:15 Hola, mundo!