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>'?

Reply via email to