Defined in header <type_traits> template< class... T >
struct common_type; (since C++11)
Determines the common type among all types T..., that is the type all T... can be implicitly converted to.
For non-specialized std::common_type, the rules for determining the common type between every pair T1, T2 are exactly the rules for determining the return type of the ternary conditional operator in unevaluated context, with arbitrary first argument of type bool and with xval