aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/nlohmann-json/fix-4742_std_optional.patch
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/nlohmann-json/fix-4742_std_optional.patch')
-rw-r--r--vcpkg/ports/nlohmann-json/fix-4742_std_optional.patch108
1 files changed, 108 insertions, 0 deletions
diff --git a/vcpkg/ports/nlohmann-json/fix-4742_std_optional.patch b/vcpkg/ports/nlohmann-json/fix-4742_std_optional.patch
new file mode 100644
index 0000000..9f0edb4
--- /dev/null
+++ b/vcpkg/ports/nlohmann-json/fix-4742_std_optional.patch
@@ -0,0 +1,108 @@
+diff --git a/include/nlohmann/detail/conversions/from_json.hpp b/include/nlohmann/detail/conversions/from_json.hpp
+index d647d742..797f714d 100644
+--- a/include/nlohmann/detail/conversions/from_json.hpp
++++ b/include/nlohmann/detail/conversions/from_json.hpp
+@@ -13,9 +13,6 @@
+ #include <forward_list> // forward_list
+ #include <iterator> // inserter, front_inserter, end
+ #include <map> // map
+-#ifdef JSON_HAS_CPP_17
+- #include <optional> // optional
+-#endif
+ #include <string> // string
+ #include <tuple> // tuple, make_tuple
+ #include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
+@@ -32,6 +29,11 @@
+ #include <nlohmann/detail/string_concat.hpp>
+ #include <nlohmann/detail/value_t.hpp>
+
++// include after macro_scope.hpp
++#ifdef JSON_HAS_CPP_17
++ #include <optional> // optional
++#endif
++
+ NLOHMANN_JSON_NAMESPACE_BEGIN
+ namespace detail
+ {
+@@ -47,7 +49,6 @@ inline void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
+ }
+
+ #ifdef JSON_HAS_CPP_17
+-#ifndef JSON_USE_IMPLICIT_CONVERSIONS
+ template<typename BasicJsonType, typename T>
+ void from_json(const BasicJsonType& j, std::optional<T>& opt)
+ {
+@@ -60,8 +61,6 @@ void from_json(const BasicJsonType& j, std::optional<T>& opt)
+ opt.emplace(j.template get<T>());
+ }
+ }
+-
+-#endif // JSON_USE_IMPLICIT_CONVERSIONS
+ #endif // JSON_HAS_CPP_17
+
+ // overloads for basic_json template parameters
+diff --git a/include/nlohmann/detail/conversions/to_json.hpp b/include/nlohmann/detail/conversions/to_json.hpp
+index ead45665..f8413850 100644
+--- a/include/nlohmann/detail/conversions/to_json.hpp
++++ b/include/nlohmann/detail/conversions/to_json.hpp
+@@ -267,7 +267,7 @@ struct external_constructor<value_t::object>
+ #ifdef JSON_HAS_CPP_17
+ template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_constructible<BasicJsonType, T>::value, int> = 0>
+-void to_json(BasicJsonType& j, const std::optional<T>& opt)
++void to_json(BasicJsonType& j, const std::optional<T>& opt) noexcept
+ {
+ if (opt.has_value())
+ {
+diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp
+index 82d69f7c..53a9ea70 100644
+--- a/single_include/nlohmann/json.hpp
++++ b/single_include/nlohmann/json.hpp
+@@ -173,9 +173,6 @@
+ #include <forward_list> // forward_list
+ #include <iterator> // inserter, front_inserter, end
+ #include <map> // map
+-#ifdef JSON_HAS_CPP_17
+- #include <optional> // optional
+-#endif
+ #include <string> // string
+ #include <tuple> // tuple, make_tuple
+ #include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
+@@ -4817,6 +4814,11 @@ NLOHMANN_JSON_NAMESPACE_END
+ // #include <nlohmann/detail/value_t.hpp>
+
+
++// include after macro_scope.hpp
++#ifdef JSON_HAS_CPP_17
++ #include <optional> // optional
++#endif
++
+ NLOHMANN_JSON_NAMESPACE_BEGIN
+ namespace detail
+ {
+@@ -4832,7 +4834,6 @@ inline void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
+ }
+
+ #ifdef JSON_HAS_CPP_17
+-#ifndef JSON_USE_IMPLICIT_CONVERSIONS
+ template<typename BasicJsonType, typename T>
+ void from_json(const BasicJsonType& j, std::optional<T>& opt)
+ {
+@@ -4845,8 +4846,6 @@ void from_json(const BasicJsonType& j, std::optional<T>& opt)
+ opt.emplace(j.template get<T>());
+ }
+ }
+-
+-#endif // JSON_USE_IMPLICIT_CONVERSIONS
+ #endif // JSON_HAS_CPP_17
+
+ // overloads for basic_json template parameters
+@@ -5914,7 +5913,7 @@ struct external_constructor<value_t::object>
+ #ifdef JSON_HAS_CPP_17
+ template<typename BasicJsonType, typename T,
+ enable_if_t<std::is_constructible<BasicJsonType, T>::value, int> = 0>
+-void to_json(BasicJsonType& j, const std::optional<T>& opt)
++void to_json(BasicJsonType& j, const std::optional<T>& opt) noexcept
+ {
+ if (opt.has_value())
+ {