Namespaces
Variants

std::source_location

Von de.cppreference.net
 
 
Hilfsprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Hilfsprogramme
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Dreiseitiger Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Hilfsprogramme
Relationale Operatoren (veraltet in C++20)
 
 
Definiert in der Header-Datei <source_location>
struct source_location;
(seit C++20)

Die Klasse std::source_location repräsentiert bestimmte Informationen über den Quellcode, wie Dateinamen, Zeilennummern und Funktionsnamen. Bisher mussten Funktionen, die diese Informationen über die Aufrufstelle erhalten wollten (zu Protokollierungs-, Test- oder Debugging-Zwecken), Makros verwenden, damit vordefinierte Makros wie und __LINE__ __FILE__ im Kontext des Aufrufers expandiert werden. Die Klasse std::source_location bietet eine bessere Alternative.

std::source_location erfüllt die Anforderungen DefaultConstructible, CopyConstructible, CopyAssignable, Destructible und Swappable.

Darüber hinaus sind die folgenden Bedingungen true:

  • std::is_nothrow_move_constructible_v<std::source_location>,
  • std::is_nothrow_move_assignable_v<std::source_location> und
  • std::is_nothrow_swappable_v<std::source_location>.

Es ist beabsichtigt, dass std::source_location eine geringe Größe hat und effizient kopiert werden kann.

Es ist nicht festgelegt, ob die Kopier-/Verschiebekonstruktoren und die Kopier-/Verschiebezuweisungsoperatoren von std::source_location trivial und/oder constexpr sind.

Memberfunktionen

Erstellung
konstruiert ein neues source_location mit implementierungsdefinierten Werten
(öffentliche Elementfunktion)
[static]
konstruiert ein neues source_location entsprechend der Position des Aufruforts
(öffentliche statische Elementfunktion)
Feldzugriff
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)
gibt den Namen der von diesem Objekt repräsentierten Funktion zurück, falls vorhanden
(öffentliche Elementfunktion)

Hinweise

Feature-Test Makro Wert Std Feature
__cpp_lib_source_location 201907L (C++20) Quellcode-Information-Erfassung ( std::source_location )

Beispiel

#include <iostream>
#include <source_location>
#include <string_view>
void log(const std::string_view message,
         const std::source_location location =
               std::source_location::current())
{
    std::clog << "file: "
              << location.file_name() << '('
              << location.line() << ':'
              << location.column() << ") `"
              << location.function_name() << "`: "
              << message << '\n';
}
template<typename T>
void fun(T x)
{
    log(x); // Zeile 20
}
int main(int, char*[])
{
    log("Hello world!"); // Zeile 25
    fun("Hello C++20!");
}

Mögliche Ausgabe:

file: main.cpp(25:8) `int main(int, char**)`: Hello world!
file: main.cpp(20:8) `void fun(T) [with T = const char*]`: Hello C++20!

Siehe auch

ändert die Zeilennummer des Quellcodes und optional den aktuellen Dateinamen
(Präprozessor-Direktive)
Darstellung einer Auswertung in einem Stacktrace
(Klasse)