Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
С моей т.з. у std::optional один небольшой недостаток. Нет поддержки sentinel value, т.е. когда какое-то значение исходного типа считается nothing. Это позволило бы, к примеру, паковать указатели или сырые хендлы из сторонних библиотек без дополнительного флага, а следовательно совместимо по бинарному представлению с исходным типом. Как следствие — можно было бы делать красивый интерфейс для низкоуровневых библиотек без доп. перепаковки памяти.
auto optional_value = function_returning_optional();
if (!optional_value) {
return;
}
auto& my_precious_value = *optional_value;
// Great code that cannot be put under "if"bool anyCivilUnits { false }; bool anyCombatUnits {false}; int numAnimating { 0 };
bool anyCivilUnits { false };
bool anyCombatUnits {false};
int numAnimating { 0 };
вырвиглазное форматрирование
Рефакторинг с использованием C++17 std::optional