boolean-testable
template< class B > concept __boolean_testable_impl = std::convertible_to<B, bool>; |
(1) | (seit C++20) (nur Exposition*) |
template< class B > concept boolean-testable = |
(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]