首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::disjunction

Defined in header <type_traits>

?

?

template<class... B> struct disjunction;

(1)

(since C++17)

形成逻辑分离类型性状B...有效地执行一个逻辑或一系列的特征。

专业化std::disjunction<B1, ..., BN>有一个公共的和明确的基础,也就是说。

  • 如果sizeof...(B) == 0,,,std::false_type;否则
  • 第一类BiB1, ..., BN对此bool(Bi::value) == true,或BN如果没有这样的类型。

基类的成员名称,但disjunctionoperator=,则不隐藏,并且可以在disjunction...

断开是短路的:如果有模板类型参数。Bi带着bool(Bi::value) != false,然后实例化disjunction<B1, ..., BN>::value不需要实例化Bj::valuej > i...

模板参数

B...

-

every template argument Bi for which Bi::value is instantiated must be usable as a base class and define member value that is convertible to bool

辅助变量模板

template<class... B> inline constexpr bool disjunction_v = disjunction<B...>::value;

?

(since C++17)

可能的实施

模板<class...>结构分离:std::false[医]类型{};模板<class B1>结构分离<B1>:B1{};模板<类B1,类...。结构分离<B1,Bn...>:std::条件[医]t<bool%28B1::值%29,B1,分离<Bn.>>{};

*。

注记

...的专业化disjunction不一定是从任何一方继承的std::true_typestd::false_type*它只是继承了第一个B谁的::value,显式转换为bool,是真的,或者从最后的B,当它们全部转换为假。例如,std::disjunction<std::integral_constant<int, 2>,std::integral_constant<int, 4>>::value2...

短路实例化disjunction从折叠表达式:折叠表达式,如(... || Bs::value)实例化每个BBs,同时std::disjunction_v<Bs...>一旦确定了值,就停止实例化。如果后面的类型实例化成本很高,或者使用错误的类型实例化会导致硬错误,则这尤其有用。

二次

代码语言:javascript
复制
#include <iostream>
#include <type_traits>
 
using result0 =
    std::disjunction<std::bool_constant<false>, std::bool_constant<false>,
                     std::bool_constant<false>>;
using result1 =
    std::disjunction<std::bool_constant<true>, std::bool_constant<false>,
                     std::bool_constant<false>>;
 
int main()
{
    std::cout << std::boolalpha;
    std::cout << result0::value << '\n';
    std::cout << result1::value << '\n';
}

二次

产出:

二次

代码语言:javascript
复制
false
true

二次

另见

negation (C++17)

logical NOT metafunction (class template)

conjunction (C++17)

variadic logical AND metafunction (class template)

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com