The following erroneous code gives an error message I do not understand file.cc:
1 template < class T > 2 class A 3 { 4 public: 5 class B 6 { 7 public: 8 B( int inVal ) : m_i( inVal ) { } 9 int m_i; 10 }; 11 static B s; 12 }; 13 14 template < class T > A<T>::B A<T>::s( 10 ); gives the following error message witch g++-3.4.3 -Wall -c file.cc 14: error: expected constructor, destructor, or type conversion before "A" 14: error: expected `;' before "A" I have difficulties in understancing the message with g++-3.3.2 -Wall -c file.cc 14: warning: `A<T>::B' is implicitly a typename 14: warning: implicit typename is deprecated, please see the documentation for details This message seems much clearer to me -- Summary: [3.4 Regression] C++ error message regression Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: sschunck at pdf dot de CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18451