The following code compiles, and should not :
template<class T>
T f2(const char * s2, T arg2, T arg3);
template<class T>
T f2(const char * s2 = 0, // bug
T arg2, T arg3) {
return (s2)?arg2:arg3;
}
Same for the following :
template<class T>
class foo {
T f2(const char * s2, T arg2, T arg3);
};
template<class T>
T foo<T>::f2(const char * s2 = 0, // bug
T arg2, T arg3) {
return (s2)?arg2:arg3;
}
Or for the even simpler
template<class T>
class foo {
T f2(const char * s2 = 0, T arg2, T arg3); // bug
};
--
Summary: GCC accepts a default value for the first argument of a
template function
Product: gcc
Version: 3.4.1
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: Matthieu dot Moy at imag dot fr
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19625