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

            Bug ID: 102305
           Summary: intrinsic __is_constrctible is wrong for templated
                    abstract classes
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: andre.schackier at gmail dot com
  Target Milestone: ---

The compiler intrinsic function "__is_constructible" used to implement the
standard type traits falsy returns true for templated abstract classes. 

Minimal reproducable test case: (by Jonathan Wakely)

template <typename> struct AbstractTemplate {
  virtual ~AbstractTemplate() = 0;
};
static_assert(!__is_constructible(AbstractTemplate<int>), "");

Original godbolt link showcasing the problem with
std::is_default_constructible, which since version 9.2 uses __is_constructible 
https://godbolt.org/z/rq5GGd4rd

Reply via email to