Потому чтоTконвертируем внеобязательно<T>и потомуопиотнал<T>Менее сравнительный, когдаTМенее сравнительныйИногда вы можете получить неожиданный результат выполнения, в котором вы предпочли бы ожидать ошибку компилятора:
optional<double>Flight_plan::weight();// sometimes no weight can be returnedboolis_aircraft_too_heavy(Flight_planconst&p){returnp.weight()>p.aircraft().max_weight();// compiles!}// returns false when the optional contains no value
Статья Mixed relational comparisons раздела Boost.Optional Gotchas может быть полезна для разработчиков на c++ и boost.