Espacios de nombres
Variantes
Acciones

std::source_location

De cppreference.com
< cpp‎ | utility
 
 
Biblioteca de servicios
 
 
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:

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) [editar]
[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) [editar]
Acceso a campos
Devuelve el número de línea representada por este objeto.
(función miembro pública) [editar]
Devuelve el número de columna representado por este objeto.
(función miembro pública) [editar]
Devuelve el nombre del archivo representado por este objeto.
(función miembro pública) [editar]
Devuelve el nombre de la función representada por este objeto, si es que la hay.
(función miembro pública) [editar]

[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!