名稱空間
變體
操作

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 =
    __boolean_testable_impl<B> &&
    requires (B&& b) {
        { !std::forward<B>(b) } -> __boolean_testable_impl;

    };
(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 型別的示例包括 boolstd::true_typestd::bitset<N>::referenceint*

[編輯] 參考文獻

  • C++23 標準 (ISO/IEC 14882:2024)
  • 18.5.2 布林可測試性 [concept.booleantestable]
  • C++20 標準 (ISO/IEC 14882:2020)
  • 18.5.2 布林可測試性 [concept.booleantestable]