http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49470
Summary: no matching constructor for initialization errors not detected in g++ Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: howa...@nitro.med.uc.edu Currently g++ doesn't warn or error on invalid code such as... template <class T> class Array1D { Array1D(int n, T *a); }; template<typename T> struct A { Array1D<int> x; A() : x(1, (const int*)0) {} }; for which clang++ produces the error... [MacPro:~] howarth% clang++ -c invalid.cc invalid.cc:7:9: error: no matching constructor for initialization of 'Array1D<int>' A() : x(1, (const int*)0) {} ^ ~~~~~~~~~~~~~~~~ invalid.cc:2:3: note: candidate constructor not viable: 2nd argument ('const int *') would lose const qualifier Array1D(int n, T *a); ^ invalid.cc:1:26: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided template <class T> class Array1D { ^ 1 error generated.