Ваш класс определяет явное преобразование в bool, что позволяет использовать его экземпляр 't' непосредственно в условных операторах. Однако это явное преобразование ставит вопрос: где еще можно использовать 't' в качестве логического значения без приведения?
Сценарии контекстного преобразования
Стандарт C определяет четыре основные сценарии, в которых значение может быть контекстуально преобразовано в bool:
Операторы:
if, while, for, do- while операторы
if (t)
/* statement */;
Выражения:
Отрицание (!), логическое И (&&), логическое ИЛИ (||), тернарный оператор (?)
!t
t && t2
Тесты времени компиляции:
static_assert, noException, явный, if constexpr (требуется преобразование constexpr оператор)
static_assert(t);
noexcept(t)
Алгоритмы и концепции:
NullablePointer, аргументы предиката или компаратора в алгоритмах STL
NullablePointer T
std::remove_if(first, last, [&](auto){ return t; });
Дополнительные примечания:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3