mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Fixed error forming reference to reference (issue #495)
				
					
				
			This commit is contained in:
		| @@ -5,6 +5,7 @@ HEAD | ||||
| ---- | ||||
|  | ||||
| * Fixed error `IsBaseOf is not a member of ArduinoJson::TypeTraits` (issue #495) | ||||
| * Fixed error `forming reference to reference` (issue #495) | ||||
|  | ||||
| v5.9.0 | ||||
| ------ | ||||
|   | ||||
| @@ -15,22 +15,21 @@ | ||||
| namespace ArduinoJson { | ||||
| namespace Internals { | ||||
|  | ||||
| template <typename TSource, typename Enable = void> | ||||
| template <typename TSourceRef, typename Enable = void> | ||||
| struct ValueSetter { | ||||
|   template <typename TDestination> | ||||
|   static bool set(JsonBuffer*, TDestination& destination, | ||||
|                   const TSource& source) { | ||||
|   static bool set(JsonBuffer*, TDestination& destination, TSourceRef source) { | ||||
|     destination = source; | ||||
|     return true; | ||||
|   } | ||||
| }; | ||||
|  | ||||
| template <typename TSource> | ||||
| struct ValueSetter<TSource, typename TypeTraits::EnableIf<StringTraits< | ||||
|                                 TSource>::should_duplicate>::type> { | ||||
| template <typename TSourceRef> | ||||
| struct ValueSetter<TSourceRef, typename TypeTraits::EnableIf<StringTraits< | ||||
|                                    TSourceRef>::should_duplicate>::type> { | ||||
|   template <typename TDestination> | ||||
|   static bool set(JsonBuffer* buffer, TDestination& destination, | ||||
|                   const TSource& source) { | ||||
|                   TSourceRef source) { | ||||
|     const char* copy = buffer->strdup(source); | ||||
|     if (!copy) return false; | ||||
|     destination = copy; | ||||
| @@ -38,12 +37,11 @@ struct ValueSetter<TSource, typename TypeTraits::EnableIf<StringTraits< | ||||
|   } | ||||
| }; | ||||
|  | ||||
| template <typename TSource> | ||||
| struct ValueSetter<TSource, typename TypeTraits::EnableIf<!StringTraits< | ||||
|                                 TSource>::should_duplicate>::type> { | ||||
| template <typename TSourceRef> | ||||
| struct ValueSetter<TSourceRef, typename TypeTraits::EnableIf<!StringTraits< | ||||
|                                    TSourceRef>::should_duplicate>::type> { | ||||
|   template <typename TDestination> | ||||
|   static bool set(JsonBuffer*, TDestination& destination, | ||||
|                   const TSource& source) { | ||||
|   static bool set(JsonBuffer*, TDestination& destination, TSourceRef source) { | ||||
|     // unsigned char* -> char* | ||||
|     destination = reinterpret_cast<const char*>(source); | ||||
|     return true; | ||||
|   | ||||
| @@ -29,6 +29,12 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") | ||||
| 		-Wstrict-overflow=5 | ||||
| 		-Wundef | ||||
| 	) | ||||
|  | ||||
| 	if(NOT MINGW) | ||||
| 		add_compile_options( | ||||
| 			-std=c++98 | ||||
| 		) | ||||
| 	endif() | ||||
| endif() | ||||
|  | ||||
| if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user