Espacios de nombres
Variantes
Acciones

std::source_location::function_name

De cppreference.com
 
 
Biblioteca de servicios
 
 
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.

#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) [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]
Documentación de C++ para Nombre de archivo e información de línea