KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
In code: 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; } I'm getting an error: error C2039: 'type' : is not a member of 'std::tr1::enable_if<_Test,_Type>' Obviously I don't understand how to use enable_if . What I was thinking was that I can enable one or the second one member function from a set of member functions during compilation time but it does not work. Could anyone please explain to me how to do it correctly? Edited What I really can't understand is why isn't there typedef in one of those def. Compiler cannot find it and it wont compile it.
Tags (comma-separated)
Save Edits
Cancel