Namespaces
Variants

std::experimental::source_location:: function_name

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

Gibt den Namen der Funktion zurück, der mit der durch dieses Objekt repräsentierten Position verknüpft ist, falls vorhanden.

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

Wenn dieses Objekt eine Position im Rumpf einer Funktion repräsentiert, gibt es einen implementierungsdefinierten nullterminierten Byte-String zurück, der dem Namen der Funktion entspricht.

Andernfalls wird eine leere Zeichenkette zurückgegeben.

Beispiel

Das folgende Beispiel zeigt, wie es möglich ist, std::source_location::function_name() zu verwenden, um den Namen einer Funktion, eines Konstruktors, Destruktors oder überladenen operator() auszugeben.

#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() // <- name of the caller!
        << 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);
}

Mögliche Ausgabe:

foo()
S()
S(int)
operator=(const S&)
operator=(S&&)
~S()
~S()

Siehe auch

gibt die von diesem Objekt repräsentierte Zeilennummer zurück
(öffentliche Elementfunktion)
gibt die von diesem Objekt repräsentierte Spaltennummer zurück
(öffentliche Elementfunktion)
gibt den von diesem Objekt repräsentierten Dateinamen zurück
(öffentliche Elementfunktion)
C++ documentation für Dateinamen- und Zeileninformationen