Namespaces
Variants

std::experimental::source_location:: function_name

From cppreference.net
constexpr const char * function_name ( ) const noexcept ;
(biblioteca fundamentals TS v2)

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

El siguiente ejemplo muestra cómo es posible utilizar std::source_location::function_name() para imprimir el nombre de una función, constructor, destructor, u operador sobrecargado operator() .

#include <experimental/source_location>
#include <iostream>
#include <string_view>
inline void function_name(
    const std::string_view signature = "()",
    const std::experimental::source_location& location
        = std::experimental::source_location::current())
{
    std::cout
        << location.function_name() // <- nombre del llamador!
        << signature
        << '\n';
}
void foo() { function_name(); }
struct S {
    S() { function_name(); }
    S(int) { function_name("(int)"); }
    S& operator=(S const&) { function_name("(const S&)"); return *this; }
    S& operator=(S&&) { function_name("(S&&)"); return *this; }
    ~S() { function_name(); }
};
int main()
{
    foo();
    S p;
    S q{42};
    p = q;
    p = std::move(q);
}

Salida posible:

foo()
S()
S(int)
operator=(const S&)
operator=(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)
C++ documentation para Información de nombre de archivo y línea