| Technical Specification | ||||
| Filesystem library(filesystem TS) | ||||
| Library fundamentals(library fundamentals TS) | ||||
| Library fundamentals 2(library fundamentals TS v2) | ||||
| Library fundamentals 3(library fundamentals TS v3) | ||||
| Extensions for parallelism(parallelism TS) | ||||
| Extensions for parallelism 2(parallelism TS v2) | ||||
| Extensions for concurrency(concurrency TS) | ||||
| Extensions for concurrency 2(concurrency TS v2) | ||||
| Concepts(concepts TS) | ||||
| Ranges(ranges TS) | ||||
| Reflection(reflection TS) | ||||
| Mathematical special functions(special functions TR) | ||||
| Experimental Non-TS | ||||
| Pattern Matching | ||||
| Linear Algebra | ||||
| std::execution | ||||
| Contracts | ||||
| 2D Graphics |
![]() | Merged into ISO C++ The functionality described on this page was merged into the mainline ISO C++ standard as of 2/2016, seestd::disjunction(since C++17) |
Defined in header <experimental/type_traits> | ||
template<class...B> struct disjunction; | (library fundamentals TS v2) | |
Forms thelogical disjunction of the type traitsB..., effectively performing a logical or on the sequence of traits.
The specializationstd::experimental::disjunction<B1, ..., BN> has a public and unambiguous base that is
Bi inB1, ..., BN for whichbool(Bi::value)==true, orBN if there is no such type.The member names of the base class, other thandisjunction andoperator=, are not hidden and are unambiguously available indisjunction.
Disjunction is short-circuiting: if there is a template type argumentBi withbool(Bi::value)!=false, then instantiatingdisjunction<B1, ..., BN>::value does not require the instantiation ofBj::value forj > i.
Contents |
| B... | - | every template argumentBi for whichBi::value is instantiated must be usable as a base class and define membervalue that is convertible tobool |
template<class...B> constexprbool disjunction_v= disjunction<B...>::value; | (library fundamentals TS v2) | |
template<class...>struct disjunction:std::false_type{};template<class B1>struct disjunction<B1>: B1{};template<class B1,class...Bn>struct disjunction<B1, Bn...>:std::conditional_t<bool(B1::value), B1, disjunction<Bn...>>{}; |
A specialization ofdisjunction does not necessarily inherit from of eitherstd::true_type orstd::false_type: it simply inherits from the firstB whose::value, explicitly converted tobool, is true, or from the very last B when all of them convert to false. For example,disjunction<std::integral_constant<int,2>,std::integral_constant<int,4>>::value is2.
| This section is incomplete Reason: no example |
(C++17) | variadic logical OR metafunction (class template)[edit] |