Make nullopt_t safer

This commit is contained in:
Simon Brand
2017-09-29 19:49:46 +01:00
parent f2018a122b
commit 4287be6e74

View File

@@ -19,8 +19,11 @@ namespace tl {
class optional; class optional;
// [optional.nullopt], no-value state indicator // [optional.nullopt], no-value state indicator
struct nullopt_t{}; struct nullopt_t{
inline constexpr nullopt_t nullopt; struct do_not_use{};
constexpr explicit nullopt(do_not_use, do_not_use) noexcept{}
};
inline constexpr nullopt_t nullopt{nullopt_t::do_not_use{}, nullopt_t::do_not_use{}};
// [optional.bad.access], class bad_­optional_­access // [optional.bad.access], class bad_­optional_­access
class bad_optional_access : public std::exception { class bad_optional_access : public std::exception {