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