boolean-testable
出自 cppreference.cn
template< class B > concept __boolean_testable_impl = std::convertible_to<B, bool>; |
(1) | (since C++20) (仅供阐释*) |
template< class B > concept boolean-testable = |
(2) | (since C++20) (仅供阐释*) |
仅供阐释的概念 boolean-testable
规定了可转换为 bool 的表达式的需求,以及逻辑运算符具有通常行为(包括 短路求值)的需求,即使对于两个不同的 boolean-testable
类型也是如此。
形式上,为了建模仅供阐释的概念 __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]