From Bugzilla Helper: User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) Description of problem: Version-Release number of selected component (if applicable): How reproducible: Always Steps to Reproduce: 1.Compile the program supplied under "Additional Information" 2. 3. Additional info: #include <string> class A { public: template<typename T> void f(const std::string& x, const std::string& y, const T& z, const std::string& a=""); }; template<typename T> void A::f(const std::string& x, const std::string& y, const T& z, const std::string& a) { } template<> void A::f<std::string>(const std::string& x, const std::string& y, const std::string& z, const std::string& a) { } int main(void) { A a; a.f("x","y",std::string("z")); return 0; }
libstdc++ v2 (found e.g. in gcc-2.95.x and gcc-2.96-RH) never claimed to be 100% ISO C++ 98 conforming, this is just one of the cases. With g++ 2.95.x you'll get the same result. If you want this to work, you can use gcc 3.0.x (e.g. found in RHL 7.2 gcc3* rpms).