在可變參數模板類中檢索函數指針的參數類型
在上一期中,創建了一個泛型函子類來處理函數具有任意參數列表。目前的問題涉及存取此類建構函數中函數指標的參數類型。
要解決此問題,您可以使用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>
此類提供以下功能:
例如:
<code class="cpp">struct R{}; struct A{}; struct B{}; typedef std::function<R(A,B)> fun; std::cout << std::is_same<R, function_traits<fun>::result_type>::value << std::endl; std::cout << std::is_same<A, function_traits<fun>::arg<0>::type>::value << std::endl; std::cout << std::is_same<B, function_traits<fun>::arg<1>::type>::value << std::endl;</code>
輸出:
1 1 1
此範例示範如何利用function_traits 在可變參數範本類別的建構子中擷取參數類型。
以上是如何檢索可變參數模板類別中函數指標的參數類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!