問題:
C 20 機能 std::source_location が提供する関数呼び出し中のコンテキスト情報。ただし、可変個引数テンプレート関数との統合では、可変個引数の位置が固定されているため課題が生じます。
失敗した試行:
演繹ガイドを使用した解決策:
この問題を解決するには、演繹ガイドを使用できます:
<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>
演繹ガイドを指定すると、コンパイラは可変個引数テンプレート関数の正しい型を推論できます。
テスト:
<code class="cpp">int main() { debug(5, 'A', 3.14f, "foo"); }</code>
このコードは正常にコンパイルされ、指定された引数とそのソースの場所が出力されます。
DEMO: [元の質問で提供されたリンク]
以上が可変引数テンプレート関数で `std::source_location` を使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。