Namespaces
Variants

boolean-testable

From cppreference.net
template < class B >
concept __boolean_testable_impl = std:: convertible_to < B, bool > ;
(1) (seit C++20)
( Nur zur Darstellung* )
template < class B >

concept boolean - testable =
__boolean_testable_impl < B > &&
requires ( B && b ) {
{ ! std:: forward < B > ( b ) } - > __boolean_testable_impl ;

} ;
(2) (seit C++20)
( Nur zur Darstellung* )

Das exposition-only-Konzept boolean-testable spezifiziert die Anforderungen für Ausdrücke, die in bool konvertierbar sind und für welche die logischen Operatoren das übliche Verhalten aufweisen (einschließlich Short-Circuit-Auswertung ), selbst für zwei verschiedene boolean-testable Typen.

Formal muss zur Modellierung des exposition-only-Konzepts __boolean_testable_impl der Typ keine Member- operator && und operator || definieren, und es dürfen keine viable non-member operator && und operator || durch argument-dependent lookup sichtbar sein. Zusätzlich, gegeben einen Ausdruck e für den decltype ( ( e ) ) den Typ B hat, wird boolean-testable nur dann modelliert, wenn bool ( e ) == ! bool ( ! e ) .

Gleichheitserhaltung

Ausdrücke, die in requires expressions der Standardbibliothek-Konzepte deklariert werden, müssen equality-preserving sein (sofern nicht anders angegeben).

Hinweise

Beispiele für boolean-testable Typen umfassen bool , std::true_type , std:: bitset < N > :: reference , und int * .

Referenzen

  • C++23-Standard (ISO/IEC 14882:2024):
  • 18.5.2 Boolesche Prüfbarkeit [concept.booleantestable]
  • C++20-Standard (ISO/IEC 14882:2020):
  • 18.5.2 Boolesche Prüfbarkeit [concept.booleantestable]