http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58753

--- Comment #8 from Ville Voutilainen <ville.voutilainen at gmail dot com> ---
Slightly reduced, I guess...

#include <initializer_list>

template <class T>
struct X {X(std::initializer_list<int>) {}};

template <class zomg> 
class T {
  X<T> x{1}; 
}; 


int main()
{
  T<int> t;
}



This gives

plaatti-reduced2.cpp: In constructor ‘constexpr T<int>::T()’:
plaatti-reduced2.cpp:7:7: error: no matching function for call to ‘X<T<int>
>::X(<brace-enclosed initializer list>)’
 class T {
       ^
plaatti-reduced2.cpp:7:7: note: candidates are:
plaatti-reduced2.cpp:4:11: note: X<T>::X(std::initializer_list<int>) [with T =
T<int>]
 struct X {X(std::initializer_list<int>) {}};
           ^
plaatti-reduced2.cpp:4:8: note: constexpr X<T<int> >::X(const X<T<int> >&)
 struct X {X(std::initializer_list<int>) {}};
        ^
plaatti-reduced2.cpp:4:8: note:   no known conversion for argument 1 from ‘int’
to ‘const X<T<int> >&’
plaatti-reduced2.cpp:4:8: note: constexpr X<T<int> >::X(X<T<int> >&&)
plaatti-reduced2.cpp:4:8: note:   no known conversion for argument 1 from ‘int’
to ‘X<T<int> >&&’
plaatti-reduced2.cpp: In function ‘int main()’:
plaatti-reduced2.cpp:14:10: note: synthesized method ‘constexpr T<int>::T()’
first required here 
   T<int> t;
          ^

Reply via email to