boolean-testable
来自cppreference.com
template< class B > concept __boolean_testable_impl = std::convertible_to<B, bool>; |
(1) | (C++20 起) (仅用于阐述*) |
template< class B > concept boolean-testable = |
(2) | (C++20 起) (仅用于阐述*) |
仅用于阐释的概念 boolean-testable
指定可转换成 bool 的表达式,且逻辑运算符对其拥有通常行为(包括短路),即使是对于两个不同的 boolean-testable
类型亦是如此。
正式而言,为满足仅用于阐释的概念 __boolean_testable_impl
,类型必须不定义任何成员 operator&& 与 operator||,而且无可行的非成员 operator&& 及 operator|| 可对实参依赖查找可见。另外给定使 decltype((e)) 为 B
的表达式 e
,boolean-testable
仅若 bool(e) == !bool(!e) 才得以实现。
相等性保持
标准库概念的 requires 表达式中声明的表达式都要求保持相等性(除非另外说明)。
注解
boolean-testable
类型的例子包括 bool、std::true_type、std::bitset<N>::reference 和 int*。
引用
- C++23 标准(ISO/IEC 14882:2024):
- 18.5.2 Boolean testability [concept.booleantestable]
- C++20 标准(ISO/IEC 14882:2020):
- 18.5.2 Boolean testability [concept.booleantestable]