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