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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I think the program is valid and GCC is right to accept it.

The constraint checking doesn't need to check that the entire instantiation of
DeriveFrom<void(*)()> is valid, so doesn't check the base classes.

It also compiles if DeriveFrom is incomplete:

template<class> struct DeriveFrom;

All the constraint checks is that DeriveFrom<T> is a type, which doesn't
require it to be complete or able to be instantiated.

Reply via email to