https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109935
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- C{B{1}}; Does work though. I suspect the issue is cannot figure out that {1} can be bound to B<T> and deudce T there and even GCC gives that as a reason: <source>:7:8: note: candidate: 'template<class T> C(B<T>)-> C<T>' 7 | struct C : public B<T> { | ^ <source>:7:8: note: template argument deduction/substitution failed: <source>:15:10: note: couldn't deduce template parameter 'T' 15 | C{{1}}; | ^