22#if (__cplusplus >= 201703L) && defined(OLP_CPP_SDK_USE_STD_OPTIONAL)
29using optional = std::optional<T>;
30constexpr auto none = std::nullopt;
32template <
typename T,
typename U = T>
33constexpr auto value_or(
const optional<T>& opt, U&& def) {
34 return opt.value_or(std::forward<U>(def));
38constexpr const T* get_ptr(
const optional<T>& opt) {
39 return opt ? &*opt :
nullptr;
43constexpr T* get_ptr(optional<T>& opt) {
44 return opt ? &*opt :
nullptr;
48optional<std::decay_t<T>> make_optional(T&& v) {
49 return optional<std::decay_t<T>>(std::forward<T>(v));
56#include <boost/optional.hpp>
62using optional = boost::optional<T>;
64constexpr auto none = boost::none;
67constexpr typename optional<T>::reference_const_type value_or(
68 const optional<T>& opt,
typename optional<T>::reference_const_type def) {
69 return opt.get_value_or(def);
73constexpr typename optional<T>::reference_type value_or(
74 optional<T>& opt,
typename optional<T>::reference_type def) {
75 return opt.get_value_or(def);
79constexpr typename optional<T>::pointer_const_type get_ptr(
80 const optional<T>& opt) {
85constexpr typename optional<T>::pointer_type get_ptr(optional<T>& opt) {
90optional<BOOST_DEDUCED_TYPENAME boost::decay<T>::type> make_optional(T&& v) {
91 return optional<BOOST_DEDUCED_TYPENAME boost::decay<T>::type>(
92 boost::forward<T>(v));
Rules all the other namespaces.
Definition AppleSignInProperties.h:24