Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::experimental::disjunction

      From cppreference.com
      <cpp‎ |experimental
       
       
       
       
      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)
      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

      • ifsizeof...(B)==0,std::false_type; otherwise
      • the first typeBi 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

      [edit]Template parameters

      B... - every template argumentBi for whichBi::value is instantiated must be usable as a base class and define membervalue that is convertible tobool

      [edit] Helper variable template

      template<class...B>
      constexprbool disjunction_v= disjunction<B...>::value;
      (library fundamentals TS v2)

      [edit]Possible implementation

      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...>>{};

      [edit]Notes

      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.

      [edit]Example

      This section is incomplete
      Reason: no example

      [edit]See also

      variadic logical OR metafunction
      (class template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/disjunction&oldid=154816"

      [8]ページ先頭

      ©2009-2026 Movatter.jp