[ Web Proxy ]
URL:
Viewing: https://de.cppreference.com/cpp/utility/source_location [Back]  [Original]

std::source_location cppreference.com
cppreference.com
Namensrume
Varianten

std::source_location

Aus cppreference.com
<tbody> </tbody>
definiert in Header <source_location>
struct source_location;

Die Klasse source_location liefert eine Reihe von Informationen ber den Quellkode wie z.B. Dateiname, Zeilennummer und Funktionsnamen. Vor C++20 muten Funktionen, die Informationen ber den Quellkode an der Stelle des Aufrufs bentigten (z.B. frs Protokollieren, Testen oder Fehlersuchen), Makros benutzen wie __LINE__ und __FILE__, die an der Aufrufstelle expandiert wurden. Die Klasse source_location stellt eine bessere Alternative dar.

Die Klasse source_location erfllt die Anforderungen fr DefaultConstructible, CopyConstructible, CopyAssignable und Destructible. Ein lokalisierbarer Wert (lvalue) von source_location erfllt zustzlich die Anforderungen fr Swappable. Zustzlich sind folgende Bedingungen

  • std::is_nothrow_move_constructible_v<std::source_location>,
  • std::is_nothrow_move_assignable_v<std::source_location> and
  • std::is_nothrow_swappable_v<std::source_location>

erfllt.

Es ist erstrebenswert, da source_location eine geringe Gre hat und effizient kopiert werden kann.

Es ist undefiniert, ob der Kopier- und Verschiebekonstruktor und die Kopier- und Verschiebezuweisungsoperatoren von source_location trivial oder constexpr sind.

Methoden

Erzeugung
erzeugt ein neues Objekt von source_location mit implementationsabhngigen Werten
(ffentliche Elementfunktion) [edit]
[statisch]
erzeugt ein neues Objekt vom Type source_location mit korrekten Werten fr die Aufrufstelle
(public static Elementfunktion) [edit]
Wertezugriff
gibt die Zeilennummer zurck
(ffentliche Elementfunktion) [edit]
gibt die Spaltennummer zurck
(ffentliche Elementfunktion) [edit]
gibt den Dateiname zurck
(ffentliche Elementfunktion) [edit]
gibt den Funktionsnamen zurck
(ffentliche Elementfunktion) [edit]

Beispiel

#include <iostream>
#include <string_view>
#include <source_location>

void log(const std::string_view message,
         const std::source_location location = 
               std::source_location::current())
{
    std::cout << "file: "
              << location.file_name() << "("
              << location.line() << ":"
              << location.column() << ") `"
              << location.function_name() << "`: "
              << message << '\n';
}

template <typename T> void fun(T x)
{
    log(x);
}

int main(int, char*[])
{
    log("Hello world!");
    fun("Hello C++20!");
}

Possible output:

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

Referenzen

Darstellung eines Ertrags in einem Stacktrace
(Klasse) [edit]
Informationen ber Dateiname und Zeilennummern

Web Proxy Viewer  |  New URL  |  Original Page