[Bug c++/84849] Ambiguous resolution of braze initializer list to a class with explicit constructors
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 13 18:51:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84849
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|Ambiguous resolution of |Ambiguous resolution of
|braze initializer list to a |braze initializer list to a
|class with explicit |class with explicit
|copy/move constructors |constructors
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Further reduced:
struct X {
X(int) { }
};
struct Foo {
explicit Foo(const X&);
explicit Foo(X&&) { }
};
int main() {
Foo v({1});
}
vs.cc: In function 'int main()':
vs.cc:11:12: error: call of overloaded 'Foo(<brace-enclosed initializer list>)'
is ambiguous
Foo v({1});
^
vs.cc:7:12: note: candidate: 'Foo::Foo(X&&)'
explicit Foo(X&&) { }
^~~
vs.cc:6:12: note: candidate: 'Foo::Foo(const X&)'
explicit Foo(const X&);
^~~
vs.cc:5:8: note: candidate: 'constexpr Foo::Foo(const Foo&)'
struct Foo {
^~~
vs.cc:5:8: note: candidate: 'constexpr Foo::Foo(Foo&&)'
More information about the Gcc-bugs
mailing list