A type-trait variable template is the C++17 shorthand for reading a type trait’s Boolean value. Instead of writing std::is_constructible<Blob>::value, write std::is_constructible_v<Blob>. Both forms test a type at compile time; the _v helper removes the need to spell out value. section 6.1.4
Checking a polymorphic base class
A set of static assertions can check the special member functions of Race::Blob: it is not default-constructible, copy-constructible, copy-assignable, move-constructible, or move-assignable, but it is destructible. These checks turn type properties into compile-time requirements.
