diff --git a/enum.h b/enum.h index c89804b..b533744 100644 --- a/enum.h +++ b/enum.h @@ -14,6 +14,10 @@ #include #include +#if __cplusplus >= 201703L +#include +#endif + // in-line, non-#pragma warning handling // not supported in very old compilers (namely gcc 4.4 or less) @@ -344,6 +348,13 @@ struct optional { BETTER_ENUMS_CONSTEXPR_ const T& value() const { return _value; } + #if defined(__cpp_lib_optional) && (__cpp_lib_optional >= 201606L) + BETTER_ENUMS_CONSTEXPR_ operator std::optional() const { + if(has_value()) {return {_value};} + return std::nullopt; + } + #endif + private: bool _valid; T _value;