Namensräume
Varianten
Aktionen

std::source_location

Von cppreference.com
< cpp‎ | utility
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
source_location
(C++20)
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
 
Definiert in Header <source_location>
struct source_location;
(seit C++20)

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

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

Zusätzlich sind die folgenden Bedingungen true

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

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

Inhalt

[bearbeiten] Memberfunktionen

Erzeugung
erzeugt eine neue source_location mit implementierungsdefinierten Werten
(public member function) [bearbeiten]
[static]
erzeugt eine neue source_location, die dem Ort der Aufrufstelle entspricht
(public static member function) [bearbeiten]
Feldzugriff
gibt die von diesem Objekt repräsentierte Zeilennummer zurück
(public member function) [bearbeiten]
gibt die von diesem Objekt repräsentierte Spaltennummer zurück
(public member function) [bearbeiten]
gibt den von diesem Objekt repräsentierten Dateinamen zurück
(public member function) [bearbeiten]
gibt den Namen der von diesem Objekt repräsentierten Funktion zurück, falls vorhanden
(public member function) [bearbeiten]

[bearbeiten] Hinweise

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

[bearbeiten] 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); // line 20
}
 
int main(int, char*[])
{
    log("Hello world!"); // line 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!

[bearbeiten] Siehe auch

ändert die Zeilennummer des Quellcodes und optional den aktuellen Dateinamen
(preprocessing directive)[bearbeiten]
Repräsentation einer Auswertung in einem Stacktrace
(class) [bearbeiten]