/* in file1 */ template class type_info { public: static T one() { return (T(0)); } static T zero() { return (T(0)); } }; template <> class type_info { public: static float one() { return 1.0f; } static float zero() { return 0.0f; } }; // gives error when using like: template class Foo // ... type_info::one() // The class is instantiated as Foo // Error: "type_info: ambiguous symbol