boolean-testable

来自cppreference.com
< cpp‎ | concepts


template< class B >
concept __boolean_testable_impl = std::convertible_to<B, bool>;
(1) (C++20 起)
(仅用于阐述*)
template< class B >

concept boolean-testable =
    __boolean_testable_impl<B> &&
    requires (B&& b) {
        { !std::forward<B>(b) } -> __boolean_testable_impl;

    };
(2) (C++20 起)
(仅用于阐述*)

仅用于阐释的概念 boolean-testable 指定可转换成 bool 的表达式,且逻辑运算符对其拥有通常行为(包括短路),即使是对于两个不同的 boolean-testable 类型亦是如此。

正式而言,为满足仅用于阐释的概念 __boolean_testable_impl,类型必须不定义任何成员 operator&&operator||,而且无可行的非成员 operator&&operator|| 可对实参依赖查找可见。另外给定使 decltype((e))B 的表达式 eboolean-testable 仅若 bool(e) == !bool(!e) 才得以实现。

相等性保持

标准库概念的 requires 表达式中声明的表达式都要求保持相等性(除非另外说明)。

注解

boolean-testable 类型的例子包括 boolstd::true_typestd::bitset<N>::referenceint*

引用

  • 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]