Namespaces
Variants

boolean-testable

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