代码:
template<class T> struct is_builtin { enum {value = 0}; }; template<> struct is_builtin<char> { enum {value = 1}; }; template<> struct is_builtin<int> { enum {value = 1}; }; template<> struct is_builtin<double> { enum {value = 1}; }; template<class T> struct My { typename enable_if<is_builtin<T>::value,void>::type f(T arg) { std::cout << "Built-in as a param.\n"; } typename enable_if<!is_builtin<T>::value,void>::type f(T arg) { std::cout << "Non - built-in as a param.\n"; } }; struct A { }; int main() { A a; My<int> m; My<A> ma; m.f(1); ma.f(a); return 0; }
我收到一个错误:
error C2039: 'type' : is not a member of 'std::tr1::enable_if<_Test,_Type>'
显然我不明白如何使用enable_if.我在想的是,我可以在编译时从一组成员函数启用一个或第二个成员函数,但是它不起作用.任何人都可以向我解释如何正确执行?
编辑
我真的不明白的是为什么在其中一个def没有typedef.编译器找不到它,它不会编译它.