在可變參數模板類別中檢索函數參數類型
指定的函子類Foo 提供了一種使用任意參數列表調用函數的方法。然而,確定構造函數中的參數類型是一個挑戰。
要克服這個問題,您可以使用function_traits 類,如下所示:
<code class="cpp">template<typename T> struct function_traits; template<typename R, typename ...Args> struct function_traits<std::function<R(Args...)>> { static const size_t nargs = sizeof...(Args); typedef R result_type; template <size_t i> struct arg { typedef typename std::tuple_element<i, std::tuple<Args...>>::type type; }; };</code>
在Foo 類別中,您可以使用function_traits來取得參數類型資訊:
<code class="cpp">class Foo { std::function<void(ARGS...)> m_f; public: using result_type = typename function_traits<decltype(m_f)>::result_type; using arg0_type = typename function_traits<decltype(m_f)>::arg<0>::type; // ... Additional argument types as needed };</code>
這種方法可讓您利用類型系統以通用和類型安全的方式存取和操作函數參數類型。
以上是如何檢索可變參數模板類別中的函數參數類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!