std:: source_location
|
Definiert im Header
<source_location>
|
||
|
struct
source_location
;
|
(seit C++20) | |
Die
std::source_location
-Klasse repräsentiert bestimmte Informationen über den Quellcode, wie Dateinamen, Zeilennummern und Funktionsnamen. Bisher mussten Funktionen, die diese Informationen über den Aufrufort erhalten möchten (für Protokollierung, Tests oder Debugging-Zwecke), Makros verwenden, damit
vordefinierte Makros
wie
__LINE__
und
__FILE__
im Kontext des Aufrufers expandiert werden. Die
std::source_location
-Klasse bietet eine bessere Alternative.
std::source_location
erfüllt die Anforderungen
DefaultConstructible
,
CopyConstructible
,
CopyAssignable
,
Destructible
und
Swappable
.
Zusätzlich 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 spezifiziert, ob die Kopier-/Move-Konstruktoren und die Kopier-/Move-Zuweisungsoperatoren von
std::source_location
trivial und/oder constexpr sind.
Inhaltsverzeichnis |
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) |
|
|
(C++23)
|
Darstellung einer Auswertung in einem Stacktrace
(Klasse) |