Problem:
Die C 20-Funktion std::source_location bietet Kontextinformationen bei Funktionsaufrufen. Die Integration mit variadic-Vorlagenfunktionen stellt jedoch aufgrund der festen Position variadic-Argumente eine Herausforderung dar.
Fehlgeschlagene Versuche:
Lösung mit einem Deduktionsleitfaden:
Um dieses Problem zu beheben , kann ein Abzugsleitfaden verwendet werden:
<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>
Durch Angabe eines Abzugsleitfadens kann der Compiler die richtigen Typen für die Variadic-Vorlagenfunktion ableiten.
Test:
<code class="cpp">int main() { debug(5, 'A', 3.14f, "foo"); }</code>
Dieser Code wird erfolgreich kompiliert und gibt die bereitgestellten Argumente zusammen mit ihrem Quellspeicherort aus.
DEMO: [Link in Originalfrage bereitgestellt]
Das obige ist der detaillierte Inhalt vonWie verwende ich „std::source_location' mit Variadic-Vorlagenfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!