&& param == 1) или надо обращаться обязательно через оператор * или value() ?
можно, но можно и короче - if (param && *param == 1), или if (param.value_or(0) == 1), а в C++23 есть удобные методы, позволяющие соединять optional’ы в цепочку в функциональном стиле
Не, имел ввиду обратиться к значению прямо param
покажи чуть более расширенный пример, а то не совсем понятно контекст
Можно же просто if (optParam == 1)
подозреваю что здесь случится не то, что кажется, а неявный вызов operator bool(), и в результате оно будет говорить true на любое значение параметра
Как? У == выше приоритет
на это я уже отвечал, хочется еще пару строк до и после, чтобы был понятен контекст
ой, и правда, можно. Ошибся.
Самое крутое, что там полный набор: <=>
Ну т.е. param == 42 и *param == 42 одно и тоже?
Нет, конечно, ибо первое учитывает случай пустого optional
офигеть, не знал о том что для него операторы сравнения реализованы, спасибо >_<
Ну я имею ввиду после проверки на has_value
Проверка есть в операторе
В что эта проверка в операторе сделает? Кинет исключение?
https://en.cppreference.com/w/cpp/utility/optional/operator_cmp
Обсуждают сегодня