名前空間
変種
操作

boolean-testable

From 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以降)
(説明用*)

このexposition-onlyコンセプトboolean-testableは、boolに変換可能であり、論理演算子(短絡評価を含む)が通常の動作をする式に対する要件を指定します。これは、2つの異なるboolean-testable型に対しても同様です。

形式的には、exposition-onlyコンセプト__boolean_testable_implをモデル化するためには、型はそのメンバとして&&演算子と||演算子を定義してはならず、また、引数依存名探索によって、有効な非メンバ&&演算子と||演算子が見えてはなりません。加えて、decltype((e))Bであるような式eが与えられた場合、boolean-testablebool(e) == !bool(!e)のみが成り立つ場合にモデル化されます。

[編集] 等価性保持

標準ライブラリのコンセプトのrequiresで宣言された式は、(特に明記されていない限り)等価性保持である必要があります。

[編集] 注記

boolean-testable型の例としては、boolstd::true_typeint*、そしてboolに変換可能な型(例:int)があります。

[編集] 参考文献

  • C++23標準 (ISO/IEC 14882:2024)
  • 18.5.2 Boolean testability [concept.booleantestable]
  • C++20 standard (ISO/IEC 14882:2020)
  • 18.5.2 Boolean testability [concept.booleantestable]
English 日本語 中文(简体) 中文(繁體)