/* 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 // ... type_info::one() /* Error: "type_info: ambiguous symbol */