Кто не знал, в C++23 добавили «монадические операции» для std::optional. Вот тут можно посмотреть пример:
https://www.cppstories.com/2023/monadic-optional-ops-cpp23/
Что бы вы предпочли в своем коде: первый вариант (по старинке с if(x) …) или второй, монадический? При условии, разумеется, что вам доступен и разрешен C++23.
Лично я - первый, и вот, почему:
1) во-первых, классический пример уже неоправданно многословен.
Зачем писать «if (x) … if (! x) …», когда можно просто «if (x) … else …»;
- автор как бы специально хочет показать, что с монадическими код короче, и специально вставляет пустые строки между if’ами, там где с монадическими операциями пишет всё подряд без пустых строк;
- приходится на пустом месте создавать лямбды;
- а что, если будет два std::optional, и второй используется опционально, при условии, что первый установлен? Тогда забор из лямбд.
Такое ощущение, что делается это всё ради жертвы богу функциональщины.
А вы как считаете?