Namespaces
Variants

std::source_location:: function_name

From cppreference.net
Utilities library
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 alguna.

Contenidos

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)