5
मैं एक समारोह के लक्षण struct कि एक समारोह के तर्कों के प्रकार प्रदान करता है std::tuple_element
का उपयोग कर:अगर सूचकांक सीमा से बाहर है तो std :: tuple_element से शून्य वापस कैसे करें?
#include <iostream>
#include <tuple>
#include <typeinfo>
template <typename T>
struct function_traits;
template <typename T_Ret, typename ...T_Args>
struct function_traits<T_Ret(T_Args...)> {
// Number of arguments.
enum { arity = sizeof...(T_Args) };
// Argument types.
template <size_t i>
struct args {
using type
= typename std::tuple_element<i, std::tuple<T_Args...>>::type;
};
};
int main() {
using Arg0 = function_traits<int(float)>::args<0>::type;
//using Arg1 = function_traits<int(float)>::args<1>::type; // Error, should be void.
std::cout << typeid(Arg0).name() << std::endl;
//std::cout << typeid(Arg1).name() << std::endl;
}
तो सूचकांक i
रेंज (>= arity
) से बाहर है, यह एक संकलन समय त्रुटि देता है । इसके बजाय, मुझे args<i>::type
void
के लिए i
सीमा से बाहर करना होगा।
मैं विशिष्ट i
के लिए args
, इस तरह के i == arity
के रूप में विशेषज्ञ कर सकते हैं, मैं सभी i >= arity
के लिए args
विशेषज्ञता के बारे में कैसे जा सकते हैं?
आप हमारे लिए कोड का विस्तार कर सकते हैं। तो हम इसे संकलित कर सकते हैं? एक साधारण उपयोग मामले आदि की तरह। – Hayt
@ हैट हो गया: http://ideone.com/qM9Jxp – zennehoy