Defined in header <type_traits> template<class... B>
struct disjunction; (1) (since C++17)
Forms the logical disjunction of the type traits B... .
The BaseCharacteristic of a specialization std::disjunction <B1, ..., BN> is the first Bi for which Bi::value != false, or if every Bi::value == false, the BaseCharacteristic is BN.
If sizeof...(B) == 0, the BaseCharacteristic is std::false_type.
Disjunction is short-circuiting: if there is a template type argument Bi