15 #ifndef INCLUDE_STD_OPTIONAL_EXPERIMENTAL 18 # if defined(__cpp_lib_optional) 19 # define INCLUDE_STD_OPTIONAL_EXPERIMENTAL 0 22 # elif defined(__cpp_lib_experimental_optional) 23 # define INCLUDE_STD_OPTIONAL_EXPERIMENTAL 1 27 # elif !defined(__has_include) 28 # define INCLUDE_STD_OPTIONAL_EXPERIMENTAL 1 31 # elif __has_include(<optional>) 37 # if __has_include(<yvals_core.h>) 38 # include <yvals_core.h> 41 # if defined(_HAS_CXX17) && _HAS_CXX17 43 # define INCLUDE_STD_OPTIONAL_EXPERIMENTAL 0 48 # ifndef INCLUDE_STD_OPTIONAL_EXPERIMENTAL 49 # define INCLUDE_STD_OPTIONAL_EXPERIMENTAL 1 53 # else // #ifdef _MSC_VER 54 # define INCLUDE_STD_OPTIONAL_EXPERIMENTAL 0 58 # elif __has_include(<experimental/optional>) 59 # define INCLUDE_STD_OPTIONAL_EXPERIMENTAL 1 63 # error Could not find system header "<optional>" or "<experimental/optional>" 67 # if INCLUDE_STD_OPTIONAL_EXPERIMENTAL 68 # include <experimental/optional> 72 using optional = std::experimental::optional<T>;
75 static auto& nullopt = std::experimental::nullopt;
85 static auto& nullopt = std::nullopt;
89 #endif // #ifndef INCLUDE_STD_OPTIONAL_EXPERIMENTAL
std::experimental::bad_optional_access bad_optional_access
std::experimental::optional< T > optional