is_constructible is a C++ type trait that checks at compile time whether a type can be created from a specified set of argument types. Include <type_traits> and read its Boolean result through value or the C++17 _v shorthand. section 6.1.4
Checking a polymorphic base class
For the abstract Race::Blob class, static_assert can verify that default, copy, and move construction are unavailable while destruction remains supported. The same check_properties function can inspect assignment and other special member functions. section 6.1.4
