Namespaces
Variants

boolean-testable

From ja.cppreference.net
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 に変換可能で、論理演算子が通常の振る舞い( 短絡評価 を含む)を示す式の要件を定義します。これは、2つの異なる boolean-testable 型に対しても同様に適用されます。

形式的には、説明専用コンセプト__boolean_testable_implをモデル化するためには、その型はメンバーoperator&&およびoperator||を定義してはならず、また実引数依存の名前検索によって可視となる非メンバーの有効なoperator&&およびoperator||が存在してはならない。さらに、式eがdecltype((e))がBとなる場合、boolean-testableはbool(e) == !bool(!e)が成り立つ場合にのみモデル化される。

等価性保存

標準ライブラリコンセプトの requires expressions で宣言される式は、 equality-preserving であることが要求されます(特に明記されている場合を除く)。

注記

boolean-testable 型の例には、 bool 、 std::true_type 、 std:: bitset < N > :: reference 、および int * が含まれます。

参考文献

  • C++23規格 (ISO/IEC 14882:2024):
  • 18.5.2 ブーリアン試験可能性 [concept.booleantestable]
  • C++20規格 (ISO/IEC 14882:2020):
  • 18.5.2 ブーリアン試験可能性 [concept.booleantestable]