Namespaces
Variants

std::source_location:: function_name

From cppreference.net
Utilities library
constexpr const char * function_name ( ) const noexcept ;
(depuis C++20)

Retourne le nom de la fonction associée à la position représentée par cet objet, s'il y en a une.

Table des matières

Paramètres

(aucun)

Valeur de retour

Si cet objet représente une position dans le corps d'une fonction, retourne une chaîne d'octets terminée par un caractère nul définie par l'implémentation correspondant au nom de la fonction.

Sinon, une chaîne vide est retournée.

Exemple

std::source_location::function_name peut aider à obtenir les noms des fonctions (y compris les fonctions spéciales) ainsi que leurs signatures.

#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(); }();
}

Sortie possible :

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()

Voir aussi

retourne le numéro de ligne représenté par cet objet
(fonction membre publique)
retourne le numéro de colonne représenté par cet objet
(fonction membre publique)
retourne le nom de fichier représenté par cet objet
(fonction membre publique)