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

Patrick Palka <ppalka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
           Assignee|unassigned at gcc dot gnu.org      |ppalka at gcc dot 
gnu.org
                 CC|                            |ppalka at gcc dot gnu.org
           Keywords|                            |rejects-valid
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2022-07-20

--- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Confirmed, reduced:

#include <initializer_list>

template<class T>
struct A { A(...); };

template<class T>
A(std::initializer_list<T>) -> A<T>;

A a{1,2,3};

This seems valid according to [over.match.class.deduct]/4.  In order for the
initializer-list phase of overload resolution to kick in the class template
doesn't necessarily need an initializer-list constructor, it suffices to just
have a guide that looks like one.

Reply via email to