boolean-testable
From 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以降) (説明用*) |
このexposition-onlyコンセプトboolean-testableは、boolに変換可能であり、論理演算子(短絡評価を含む)が通常の動作をする式に対する要件を指定します。これは、2つの異なるboolean-testable型に対しても同様です。
形式的には、exposition-onlyコンセプト__boolean_testable_implをモデル化するためには、型はそのメンバとして&&演算子と||演算子を定義してはならず、また、引数依存名探索によって、有効な非メンバ&&演算子と||演算子が見えてはなりません。加えて、decltype((e))がBであるような式eが与えられた場合、boolean-testableはbool(e) == !bool(!e)のみが成り立つ場合にモデル化されます。
[編集] 等価性保持
標準ライブラリのコンセプトのrequires式で宣言された式は、(特に明記されていない限り)等価性保持である必要があります。
[編集] 注記
boolean-testable型の例としては、bool、std::true_type、int*、そして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]