問題:
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中文網其他相關文章!