boolean-testable
|
template
<
class
B
>
concept __boolean_testable_impl = std:: convertible_to < B, bool > ; |
(1) |
(начиная с C++20)
( только для демонстрации* ) |
|
template
<
class
B
>
concept boolean
-
testable
=
|
(2) |
(начиная с C++20)
( только для демонстрации* ) |
Экспозиционное понятие
boolean-testable
определяет требования для выражений, которые конвертируются в
bool
и для которых логические операторы имеют стандартное поведение (включая
сокращённое вычисление
), даже для двух различных типов
boolean-testable
.
Формально, для моделирования исключительно экспозиционного концепта
__boolean_testable_impl
тип не должен определять никакие члены
operator
&&
и
operator
||
, и никакие подходящие нечленные
operator
&&
и
operator
||
не должны быть видны через
поиск, зависимый от аргументов
. Кроме того, для выражения
e
такого, что
decltype
(
(
e
)
)
является
B
,
boolean-testable
моделируется только если
bool
(
e
)
==
!
bool
(
!
e
)
.
Сохранение равенства
Выражения, объявленные в requires выражениях концепций стандартной библиотеки, должны быть 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]