std::source_location::function_name
De cppreference.com
< cpp | utility | source location
constexpr const char* function_name() const noexcept; |
(desde C++20) | |
Devuelve el nombre de la función asociado con la posición representada por este objeto, si es que lo hay.
Contenido |
[editar] Parámetros
(Ninguno)
[editar] Valor de retorno
Si este objeto representa una posición en el cuerpo de una función, devuelve una cadena de bytes terminada en nulo definida por la implementación que corresponde al nombre de la función; de lo contrario, se devuelve una cadena vacía.
[editar] Ejemplo
El siguiente ejemplo muestra cómo es posible usar std::source_location::function_name()
para imprimir el nombre de una función, constructor, destructor, u operator()
sobrecargado.
Ejecuta este código
#include <iostream> #include <string_view> #include <source_location> inline void nombre_de_funcion( const std::string_view signatura = "()", const std::source_location& ubicacion = std::source_location::current()) { std::cout << ubicacion.function_name() // <- ¡nombre del llamante! << signatura << '\n'; } void foo() { nombre_de_funcion(); } struct S { S() { nombre_de_funcion(); } S(int) { nombre_de_funcion("(int)"); } S& operator=(S const&) { nombre_de_funcion("(const S&)"); return *this; } S& operator=(S&&) { nombre_de_funcion("(S&&)"); return *this; } ~S() { nombre_de_funcion(); } }; auto main() -> int { foo(); S p; S q{42}; p = q; p = std::move(q); }
Salida:
foo() S() S(int) operator=(const S&) operator=(S&&) ~S() ~S()
[editar] Véase también
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) | |
Documentación de C++ para Nombre de archivo e información de línea
|