Namespaces
Variants

std::source_location::nom_fonction

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support du langage
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 
constexpr const char* function_name() const noexcept;
(depuis C++20)

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

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)