What is wrong with partial template specialization?
I am writing a templated class with one type paramenter and one boolean, here is the code: template<class T, bool p = true> class A { private: T* ptr; public: A(); }; template<class T> A<T,true>::A() { ptr = 0xbaadf00d; } int main() { A<int> obj; A<int, false> o; return(0); } And I am getting these compilation errors: Error 1 error C3860: template argument list following class template name must list parameters in the order used in template parameter list tst.cpp 15 Error 2 error C2976: 'A<T,p>' : too few template arguments tst.cpp 15 What am I doing wrong? Or is it for some reason forbidden