boolean-testable
template
<
class B >
concept __boolean_testable_impl = std::convertible_to <B, bool > ; |
(1) |
(since C++20)
(exposition only*) |
template
<
class B >
concept boolean-testable =
|
(2) |
(since C++20)
(exposition only*) |
The exposition-only concept boolean-testable
specifies the requirements for expressions that are convertible to bool and for which the logical operators have the usual behavior (including short-circuiting), even for two different boolean-testable
Formally, to model the exposition-only concept __boolean_testable_impl
, the type must not define any member operator&& and operator||, and no viable non-member operator&& and operator|| may be visible by argument-dependent lookup. Additionally, given an expression e
such that decltype((e)) is B
, boolean-testable
is modeled only if
bool
(e)
==
!
bool
(
!e)
Equality preservation
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving
Notes
Examples of boolean-testable
types include bool, std::true_type, std::bitset<N>::
reference, and int*
References
- 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]