https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94124

            Bug ID: 94124
           Summary: [10 Regression] conversion from ‘<brace-enclosed
                    initializer list>’ to ‘F’ is ambiguous since
                    r10-6388-ge98ebda074bf8fc5
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: jason at gcc dot gnu.org
  Target Milestone: ---

I found it in libqt5-qtlocation package:

$ cat circle.ii
template <int _Nm> struct A { typedef int _Type[_Nm]; };
template <int _Nm> struct B { typename A<_Nm>::_Type _M_elems; };
class C;
class D {
  D(C);
};
class F {
public:
  F(B<2>);
  F(D);
};
F fn1() { return {{{0}}}; }

$ g++ -c circle.ii
circle.ii: In function ‘F fn1()’:
circle.ii:12:24: error: conversion from ‘<brace-enclosed initializer list>’ to
‘F’ is ambiguous
   12 | F fn1() { return {{{0}}}; }
      |                        ^
circle.ii:10:3: note: candidate: ‘F::F(D)’
   10 |   F(D);
      |   ^
circle.ii:9:3: note: candidate: ‘F::F(B<2>)’
    9 |   F(B<2>);
      |   ^

Note that clang is also happy about the code.

Reply via email to