Heim > Backend-Entwicklung > C++ > Wie können Sie „std::source_location' mit Variadic-Vorlagenfunktionen in C 20 verwenden?

Wie können Sie „std::source_location' mit Variadic-Vorlagenfunktionen in C 20 verwenden?

Linda Hamilton
Freigeben: 2024-10-29 11:47:02
Original
186 Leute haben es durchsucht

How Can You Use `std::source_location` with Variadic Template Functions in C  20?

Hindernisse bei der Verwendung von std::source_location mit Variadic-Vorlagenfunktionen überwinden

Variadic-Vorlagenfunktionen, eine leistungsstarke Funktion in C 20, ermöglichen die Behandlung einer beliebigen Anzahl von Argumenten. Die Integration von std::source_location, einem Mittel zum Erfassen von Anrufkontextinformationen, mit diesen Funktionen stellt jedoch eine Herausforderung dar.

Die Kollision mit Variadic-Parametern

Variadic-Parameter müssen vorhanden sein am Ende einer Funktionssignatur und stellt ein Hindernis beim Einbinden von std::source_location dar.

Lösung 1: Implementierung eines Abzugsleitfadens

Dieses Problem kann durch die Einführung umgangen werden eine Ableitungsanleitung, die die Aufrufsyntax umwandelt:

<code class="cpp">template <typename... Ts>
struct debug
{
    debug(Ts&&... ts, const std::source_location& loc = std::source_location::current());
};

template <typename... Ts>
debug(Ts&&...) -> debug<Ts...>;</code>
Nach dem Login kopieren

In diesem Setup bleibt die Funktionssignatur unverändert, während die Ableitungsanleitung die Lücke schließt:

<code class="cpp">int main()
{
    debug(5, 'A', 3.14f, "foo"); // Call converted to debug<int, char, float, const char*>
}</code>
Nach dem Login kopieren

Diese Lösung behält die Vorteile bei von std::source_location und gewährleistet eine nahtlose Syntax für verschiedene Vorlagenfunktionen.

Das obige ist der detaillierte Inhalt vonWie können Sie „std::source_location' mit Variadic-Vorlagenfunktionen in C 20 verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage