On Mon, Mar 4, 2019 at 3:07 AM Andrzej Krzemienski via Boost < boost@lists.boost.org> wrote:
nullopt_t was a compromise: the Committee didn't feel comfortable with introducing a generic boost::none_t with this name with well defined semantics (comparability, ordering, interaciotns with nullptr_t) that soon in the process, so we provided something that was supposed to be a temporary solution, a tag (like std::piecewise_construct) whose only purpose is to indicate an intention to initialize std::optional to a state of not containing a value. Now std::monostate has taken the role of boost::none_t. It would make sense to use it in std::optional:
std::optional<int> oi = std::monostate{};
Which breaks this case:
std::optional