diff --git a/src/ArduinoJson/Polyfills/utility.hpp b/src/ArduinoJson/Polyfills/utility.hpp index 4180f0f8..d96cafe7 100644 --- a/src/ArduinoJson/Polyfills/utility.hpp +++ b/src/ArduinoJson/Polyfills/utility.hpp @@ -8,6 +8,8 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE +using nullptr_t = decltype(nullptr); + template T&& forward(typename remove_reference::type& t) noexcept { return static_cast(t); diff --git a/src/ArduinoJson/Variant/ConverterImpl.hpp b/src/ArduinoJson/Variant/ConverterImpl.hpp index ddee0401..b52b39b5 100644 --- a/src/ArduinoJson/Variant/ConverterImpl.hpp +++ b/src/ArduinoJson/Variant/ConverterImpl.hpp @@ -6,6 +6,7 @@ #include #include +#include #include ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE @@ -174,11 +175,11 @@ struct Converter> : private detail::VariantAttorney { }; template <> -struct Converter : private detail::VariantAttorney { - static void toJson(decltype(nullptr), JsonVariant dst) { +struct Converter : private detail::VariantAttorney { + static void toJson(detail::nullptr_t, JsonVariant dst) { detail::VariantData::setNull(getData(dst), getResourceManager(dst)); } - static decltype(nullptr) fromJson(JsonVariantConst) { + static detail::nullptr_t fromJson(JsonVariantConst) { return nullptr; } static bool checkJson(JsonVariantConst src) { diff --git a/src/ArduinoJson/Variant/VariantCompare.hpp b/src/ArduinoJson/Variant/VariantCompare.hpp index 0a05d02c..ca865e64 100644 --- a/src/ArduinoJson/Variant/VariantCompare.hpp +++ b/src/ArduinoJson/Variant/VariantCompare.hpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -74,8 +75,8 @@ struct NullComparer : ComparerBase { }; template <> -struct Comparer : NullComparer { - explicit Comparer(decltype(nullptr)) : NullComparer() {} +struct Comparer : NullComparer { + explicit Comparer(nullptr_t) : NullComparer() {} }; struct ArrayComparer : ComparerBase {