Why it doesn't work? template <int size=10> class A { A(); ... } ---> template<int size=10> A<size>::A(){} It says something about default parameter for string "--->" But when implementation of A(){} int class body it compiles successful. Please on russian if you can.