boolean-testable
来自 cppreference.cn
< cpp | 概念 (concepts)
template< class B > concept __boolean_testable_impl = std::convertible_to<B, bool>; |
(1) | (C++20 起) (仅作说明*) |
template< class B > concept boolean-testable = |
(2) | (C++20 起) (仅作说明*) |
仅用于说明的 concept boolean-testable
指定了可转换为 bool 且逻辑运算符行为正常的表达式的要求(包括短路求值),即使是对于两种不同的 boolean-testable
类型。
形式上,为了符合仅用于说明的 concept __boolean_testable_impl
,该类型不得定义任何成员 operator&& 和 operator||,并且不得有任何通过实参依赖查找可见的非成员 operator&& 和 operator||。此外,给定一个表达式 e
,其 decltype((e)) 为 B
,仅当 bool(e) == !bool(!e) 时才符合 boolean-testable
。
[编辑] 相等性保持
标准库概念的 requires 表达式中声明的表达式必须是相等性保持的(除非另有说明)。
[编辑] 注解
boolean-testable
类型的示例包括 bool、std::true_type、std::bitset<N>::reference 和 int*。
[编辑] 参考文献
- C++23 标准 (ISO/IEC 14882:2024)
- 18.5.2 布尔可测试性 [concept.booleantestable]
- C++20 标准 (ISO/IEC 14882:2020)
- 18.5.2 布尔可测试性 [concept.booleantestable]