Namespaces
Variants

std::source_location::function_name

De es.cppreference.net
 
 
Biblioteca de utilerías
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilerías de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilerías generales
Operadores relacionales (obsoleto en C++20)
 
 
constexpr const char* function_name() const noexcept;
(desde C++20)

Devuelve el nombre de la función asociada con la posición representada por este objeto, si existe.

Parámetros

(ninguno)

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.

Ejemplo

std::source_location::function_name puede ayudar a obtener los nombres de las funciones (incluyendo las funciones especiales) junto con sus firmas.

#include <cstdio>
#include <utility>
#include <source_location>
inline void print_function_name(
    const std::source_location& location = std::source_location::current())
{
    std::puts(location.function_name()); // prints the name of the caller
}
void foo(double &&) { print_function_name(); }
namespace bar { void baz() { print_function_name(); } }
template <typename T> auto pub(T) { print_function_name(); return 42; }
struct S {
    S() { print_function_name(); }
    S(int) { print_function_name(); }
    ~S() { print_function_name(); }
    S& operator=(S const&) { print_function_name(); return *this; }
    S& operator=(S&&) { print_function_name(); return *this; }
};
int main(int, char const* const[])
{
    print_function_name();
    foo(3.14);
    bar::baz();
    pub(0xFULL);
    S p;
    S q{42};
    p = q;
    p = std::move(q);
    [] { print_function_name(); }();
}

Salida posible:

int main(int, const char* const*)
void foo(double&&)
void bar::baz()
auto pub(T) [with T = long long unsigned int]
S::S()
S::S(int)
S& S::operator=(const S&)
S& S::operator=(S&&)
main(int, const char* const*)::<lambda()>
S::~S()
S::~S()

Véase también

devuelve el número de línea representado 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 de archivo representado por este objeto
(función miembro pública)