This TMP technique is the simplest but not for the uninitiated.
In type_traits.h, many templates expose a ::value or ::type construct. Often these two “members” are the only visible output from the type trait meta-functions.
- ::value is a static field, typically true/false
- ::type is a member typedef, typically related to the type argument T, but can be “void” like in enable_if