Namensräume
Varianten
Aktionen

boolean-testable

Von cppreference.com
< cpp‎ | concepts
 
 
 
template< class B >
concept __boolean_testable_impl = std::convertible_to<B, bool>;
(1) (seit C++20)
(nur Exposition*)
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 Exposition*)

Das exposition-only-Konzept boolean-testable spezifiziert die Anforderungen für Ausdrücke, die in bool konvertierbar sind und für die die logischen Operatoren das übliche Verhalten (einschließlich Kurzschlussauswertung) haben, auch für zwei verschiedene boolean-testable-Typen.

Formal gesehen muss der Typ, um das exposition-only-Konzept __boolean_testable_impl zu modellieren, keinen Member operator&& und operator|| definieren, und keine aufrufbare Nicht-Member operator&& und operator|| darf über argumentabhängige Suche sichtbar sein. Zusätzlich, gegeben einen Ausdruck e, so dass decltype((e)) B ist, wird boolean-testable nur dann modelliert, wenn bool(e) == !bool(!e).

[bearbeiten] Gleichheitserhaltung

Ausdrücke, die in requires-Ausdrücken der Standardbibliothekskonzepte deklariert sind, müssen gleichheitserhaltend sein (sofern nicht anders angegeben).

[bearbeiten] Anmerkungen

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

[bearbeiten] Referenzen

  • C++23 Standard (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]