Make as many functions as possible in the interface of optional constexpr. It is not possible to be as constexpr as std::opitonal, because the latter is C++17, where constexpr is mor powerful, whereas boost::optional needs to be C++11-compatible.
This requires changing the implementation of optional storage to a union-based.