https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60437
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |manu at gcc dot gnu.org --- Comment #1 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Paul Pluzhnikov from comment #0) > Using current trunk > g++ (GCC) 4.9.0 20140305 (experimental) > > > g++ -c t.cc -std=c++11 > t.cc: In function 'void f()': > t.cc:10:8: error: no matching function for call to 'X::X(<brace-enclosed > initializer list>)' > X x{1}; Could we also print something better than <brace-enclosed initializer list>? The linker prints: undefined reference to `X::X(std::initializer_list<int>)' Changing the testcase slightly gives: test.C:12:8: error: no matching function for call to ‘X::X(<brace-enclosed initializer list>)’ X x{1}; ^ test.C:12:8: note: candidates are: test.C:7:3: note: X::X(std::initializer_list<Y>) X(std::initializer_list<Y> init); ^ test.C:7:3: note: no known conversion for argument 1 from ‘int’ to ‘std::initializer_list<Y>’ Is it really trying to convert to 'std::initializer_list<Y>' from 'int' or from 'std::initializer_list<int>'?