#include <utility> template < typename T > struct X { }; struct A { void f( X< std::pair< int, int > > v = X< std::pair< int, int > >() ); };
$ g++ tmp.cpp -Wall -c tmp.cpp:5: error: expected ‘,’ or ‘...’ before ‘>’ token tmp.cpp:5: error: wrong number of template arguments (1, should be 2) /usr/include/c++/4.1.2/bits/stl_pair.h:68: error: provided for ‘template<class _T1, class _T2> struct std::pair’ tmp.cpp:5: error: template argument 1 is invalid tmp.cpp:5: error: default argument missing for parameter 2 of ‘void A::f(X<std::pair<int, int> >, int)’ online comeau compiler accepts this testcase. -- Summary: parser error, reject valid code. Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pluto at agmk dot net GCC target triplet: *-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29084