@@ -36,12 +36,13 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
3636 }
3737
3838 // Construct from variant, array, or object
39- template <typename T, typename = detail::enable_if_t <
40- detail::IsVariant<T>::value ||
41- detail::is_same<T, JsonArray>::value ||
42- detail::is_same<T, JsonArrayConst>::value ||
43- detail::is_same<T, JsonObject>::value ||
44- detail::is_same<T, JsonObjectConst>::value>>
39+ template <typename T,
40+ detail::enable_if_t <detail::IsVariant<T>::value ||
41+ detail::is_same<T, JsonArray>::value ||
42+ detail::is_same<T, JsonArrayConst>::value ||
43+ detail::is_same<T, JsonObject>::value ||
44+ detail::is_same<T, JsonObjectConst>::value,
45+ int > = 0 >
4546 JsonDocument (const T& src,
4647 Allocator* alloc = detail::DefaultAllocator::instance())
4748 : JsonDocument(alloc) {
@@ -136,16 +137,17 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
136137
137138 // Replaces the root with the specified value.
138139 // https://arduinojson.org/v7/api/jsondocument/set/
139- template <typename T, typename = detail::enable_if_t <
140- !detail::is_base_of<JsonDocument, T>::value>>
140+ template <
141+ typename T,
142+ detail::enable_if_t <!detail::is_base_of<JsonDocument, T>::value, int > = 0 >
141143 bool set (const T& src) {
142144 return to<JsonVariant>().set (src);
143145 }
144146
145147 // Replaces the root with the specified value.
146148 // https://arduinojson.org/v7/api/jsondocument/set/
147149 template <typename TChar,
148- typename = detail::enable_if_t <!detail::is_const<TChar>::value> >
150+ detail::enable_if_t <!detail::is_const<TChar>::value, int > = 0 >
149151 bool set (TChar* src) {
150152 return to<JsonVariant>().set (src);
151153 }
@@ -187,7 +189,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
187189 // Gets or sets a root object's member.
188190 // https://arduinojson.org/v7/api/jsondocument/subscript/
189191 template <typename TString,
190- typename = detail::enable_if_t <detail::IsString<TString>::value> >
192+ detail::enable_if_t <detail::IsString<TString>::value, int > = 0 >
191193 detail::MemberProxy<JsonDocument&, detail::AdaptedString<TString>> operator [](
192194 const TString& key) {
193195 return {*this , detail::adaptString (key)};
@@ -196,8 +198,9 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
196198 // Gets or sets a root object's member.
197199 // https://arduinojson.org/v7/api/jsondocument/subscript/
198200 template <typename TChar,
199- typename = detail::enable_if_t <detail::IsString<TChar*>::value &&
200- !detail::is_const<TChar>::value>>
201+ detail::enable_if_t <detail::IsString<TChar*>::value &&
202+ !detail::is_const<TChar>::value,
203+ int > = 0 >
201204 detail::MemberProxy<JsonDocument&, detail::AdaptedString<TChar*>> operator [](
202205 TChar* key) {
203206 return {*this , detail::adaptString (key)};
@@ -206,7 +209,7 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
206209 // Gets a root object's member.
207210 // https://arduinojson.org/v7/api/jsondocument/subscript/
208211 template <typename TString,
209- typename = detail::enable_if_t <detail::IsString<TString>::value> >
212+ detail::enable_if_t <detail::IsString<TString>::value, int > = 0 >
210213 JsonVariantConst operator [](const TString& key) const {
211214 return JsonVariantConst (
212215 data_.getMember (detail::adaptString (key), &resources_), &resources_);
@@ -215,8 +218,9 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
215218 // Gets a root object's member.
216219 // https://arduinojson.org/v7/api/jsondocument/subscript/
217220 template <typename TChar,
218- typename = detail::enable_if_t <detail::IsString<TChar*>::value &&
219- !detail::is_const<TChar>::value>>
221+ detail::enable_if_t <detail::IsString<TChar*>::value &&
222+ !detail::is_const<TChar>::value,
223+ int > = 0 >
220224 JsonVariantConst operator [](TChar* key) const {
221225 return JsonVariantConst (
222226 data_.getMember (detail::adaptString (key), &resources_), &resources_);
@@ -276,15 +280,15 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
276280 // Appends a value to the root array.
277281 // https://arduinojson.org/v7/api/jsondocument/add/
278282 template <typename TChar,
279- typename = detail::enable_if_t <!detail::is_const<TChar>::value> >
283+ detail::enable_if_t <!detail::is_const<TChar>::value, int > = 0 >
280284 bool add (TChar* value) {
281285 return data_.addValue (value, &resources_);
282286 }
283287
284288 // Removes an element of the root array.
285289 // https://arduinojson.org/v7/api/jsondocument/remove/
286290 template <typename T,
287- typename = detail::enable_if_t <detail::is_integral<T>::value> >
291+ detail::enable_if_t <detail::is_integral<T>::value, int > = 0 >
288292 void remove (T index) {
289293 detail::VariantData::removeElement (getData (), size_t (index),
290294 getResourceManager ());
@@ -293,8 +297,9 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
293297 // Removes a member of the root object.
294298 // https://arduinojson.org/v7/api/jsondocument/remove/
295299 template <typename TChar,
296- typename = detail::enable_if_t <detail::IsString<TChar*>::value &&
297- !detail::is_const<TChar>::value>>
300+ detail::enable_if_t <detail::IsString<TChar*>::value &&
301+ !detail::is_const<TChar>::value,
302+ int > = 0 >
298303 void remove (TChar* key) {
299304 detail::VariantData::removeMember (getData (), detail::adaptString (key),
300305 getResourceManager ());
0 commit comments