https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86439
--- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> --- Another side effect of this is that GCC incorrectly rejects the following use of CTAD + braced-init-lists: struct B { }; struct C { }; template<class T> struct A { A(T, B); }; template<class T> A(T, C) -> A<T>; A a(0, {}); The problem is that building the call to the deduction guide has the side effect of changing the type of the {} to C, which causes later overload resolution to fail because C isn't convertible to B.