mirror of
https://github.com/nlohmann/json.git
synced 2024-11-27 16:49:02 +08:00
🚨 fix warnings
This commit is contained in:
parent
c886646707
commit
bdb2469c31
2
Makefile
2
Makefile
@ -84,6 +84,7 @@ doctest:
|
|||||||
# -Wno-missing-prototypes: for NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE
|
# -Wno-missing-prototypes: for NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE
|
||||||
# -Wno-padded: padding is nothing to warn about
|
# -Wno-padded: padding is nothing to warn about
|
||||||
# -Wno-range-loop-analysis: items tests "for(const auto i...)"
|
# -Wno-range-loop-analysis: items tests "for(const auto i...)"
|
||||||
|
# -Wno-extra-semi-stmt: spurious warnings for semicolons after JSON_ASSERT()
|
||||||
# -Wno-switch-enum -Wno-covered-switch-default: pedantic/contradicting warnings about switches
|
# -Wno-switch-enum -Wno-covered-switch-default: pedantic/contradicting warnings about switches
|
||||||
# -Wno-weak-vtables: exception class is defined inline, but has virtual method
|
# -Wno-weak-vtables: exception class is defined inline, but has virtual method
|
||||||
pedantic_clang:
|
pedantic_clang:
|
||||||
@ -100,6 +101,7 @@ pedantic_clang:
|
|||||||
-Wno-missing-prototypes \
|
-Wno-missing-prototypes \
|
||||||
-Wno-padded \
|
-Wno-padded \
|
||||||
-Wno-range-loop-analysis \
|
-Wno-range-loop-analysis \
|
||||||
|
-Wno-extra-semi-stmt \
|
||||||
-Wno-switch-enum -Wno-covered-switch-default \
|
-Wno-switch-enum -Wno-covered-switch-default \
|
||||||
-Wno-weak-vtables" cmake -S . -B cmake-build-pedantic -GNinja -DCMAKE_BUILD_TYPE=Debug -DJSON_MultipleHeaders=ON -DJSON_BuildTests=On
|
-Wno-weak-vtables" cmake -S . -B cmake-build-pedantic -GNinja -DCMAKE_BUILD_TYPE=Debug -DJSON_MultipleHeaders=ON -DJSON_BuildTests=On
|
||||||
cmake --build cmake-build-pedantic
|
cmake --build cmake-build-pedantic
|
||||||
|
@ -374,7 +374,8 @@ typename iterator_input_adapter_factory<IteratorType>::adapter_type input_adapte
|
|||||||
// Enables ADL on begin(container) and end(container)
|
// Enables ADL on begin(container) and end(container)
|
||||||
// Encloses the using declarations in namespace for not to leak them to outside scope
|
// Encloses the using declarations in namespace for not to leak them to outside scope
|
||||||
|
|
||||||
namespace container_input_adapter_factory_impl {
|
namespace container_input_adapter_factory_impl
|
||||||
|
{
|
||||||
|
|
||||||
using std::begin;
|
using std::begin;
|
||||||
using std::end;
|
using std::end;
|
||||||
@ -384,15 +385,15 @@ struct container_input_adapter_factory {};
|
|||||||
|
|
||||||
template<typename ContainerType>
|
template<typename ContainerType>
|
||||||
struct container_input_adapter_factory< ContainerType,
|
struct container_input_adapter_factory< ContainerType,
|
||||||
void_t<decltype(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>()))> >
|
void_t<decltype(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>()))>>
|
||||||
{
|
{
|
||||||
using adapter_type = decltype(input_adapter(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>())));
|
using adapter_type = decltype(input_adapter(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>())));
|
||||||
|
|
||||||
static adapter_type create(const ContainerType& container)
|
static adapter_type create(const ContainerType& container)
|
||||||
{
|
{
|
||||||
return input_adapter(begin(container), end(container));
|
return input_adapter(begin(container), end(container));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,8 +38,10 @@ This class implements a both iterators (iterator and const_iterator) for the
|
|||||||
template<typename BasicJsonType>
|
template<typename BasicJsonType>
|
||||||
class iter_impl
|
class iter_impl
|
||||||
{
|
{
|
||||||
|
/// the iterator with BasicJsonType of different const-ness
|
||||||
|
using other_iter_impl = iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
|
||||||
/// allow basic_json to access private members
|
/// allow basic_json to access private members
|
||||||
friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
|
friend other_iter_impl;
|
||||||
friend BasicJsonType;
|
friend BasicJsonType;
|
||||||
friend iteration_proxy<iter_impl>;
|
friend iteration_proxy<iter_impl>;
|
||||||
friend iteration_proxy_value<iter_impl>;
|
friend iteration_proxy_value<iter_impl>;
|
||||||
@ -390,33 +392,11 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: equal
|
@brief comparison: equal
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator==(const iter_impl<const BasicJsonType>& other) const
|
template < typename IterImpl, detail::enable_if_t < (std::is_same<IterImpl, iter_impl>::value || std::is_same<IterImpl, other_iter_impl>::value), std::nullptr_t > = nullptr >
|
||||||
{
|
bool operator==(const IterImpl& other) const
|
||||||
// if objects are not the same, the comparison is undefined
|
|
||||||
if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
|
|
||||||
{
|
|
||||||
JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
|
|
||||||
}
|
|
||||||
|
|
||||||
JSON_ASSERT(m_object != nullptr);
|
|
||||||
|
|
||||||
switch (m_object->m_type)
|
|
||||||
{
|
|
||||||
case value_t::object:
|
|
||||||
return (m_it.object_iterator == other.m_it.object_iterator);
|
|
||||||
|
|
||||||
case value_t::array:
|
|
||||||
return (m_it.array_iterator == other.m_it.array_iterator);
|
|
||||||
|
|
||||||
default:
|
|
||||||
return (m_it.primitive_iterator == other.m_it.primitive_iterator);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator==(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) const
|
|
||||||
{
|
{
|
||||||
// if objects are not the same, the comparison is undefined
|
// if objects are not the same, the comparison is undefined
|
||||||
if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
|
if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
|
||||||
@ -440,16 +420,17 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: not equal
|
@brief comparison: not equal
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator!=(const iter_impl& other) const
|
template < typename IterImpl, detail::enable_if_t < (std::is_same<IterImpl, iter_impl>::value || std::is_same<IterImpl, other_iter_impl>::value), std::nullptr_t > = nullptr >
|
||||||
|
bool operator!=(const IterImpl& other) const
|
||||||
{
|
{
|
||||||
return !operator==(other);
|
return !operator==(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: smaller
|
@brief comparison: smaller
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator<(const iter_impl& other) const
|
bool operator<(const iter_impl& other) const
|
||||||
@ -476,7 +457,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: less than or equal
|
@brief comparison: less than or equal
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator<=(const iter_impl& other) const
|
bool operator<=(const iter_impl& other) const
|
||||||
@ -485,7 +466,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: greater than
|
@brief comparison: greater than
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator>(const iter_impl& other) const
|
bool operator>(const iter_impl& other) const
|
||||||
@ -494,7 +475,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: greater than or equal
|
@brief comparison: greater than or equal
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator>=(const iter_impl& other) const
|
bool operator>=(const iter_impl& other) const
|
||||||
@ -503,7 +484,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief add to iterator
|
@brief add to iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
iter_impl& operator+=(difference_type i)
|
iter_impl& operator+=(difference_type i)
|
||||||
@ -532,7 +513,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief subtract from iterator
|
@brief subtract from iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
iter_impl& operator-=(difference_type i)
|
iter_impl& operator-=(difference_type i)
|
||||||
@ -541,7 +522,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief add to iterator
|
@brief add to iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
iter_impl operator+(difference_type i) const
|
iter_impl operator+(difference_type i) const
|
||||||
@ -552,7 +533,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief addition of distance and iterator
|
@brief addition of distance and iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
friend iter_impl operator+(difference_type i, const iter_impl& it)
|
friend iter_impl operator+(difference_type i, const iter_impl& it)
|
||||||
@ -563,7 +544,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief subtract from iterator
|
@brief subtract from iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
iter_impl operator-(difference_type i) const
|
iter_impl operator-(difference_type i) const
|
||||||
@ -574,7 +555,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief return difference
|
@brief return difference
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
difference_type operator-(const iter_impl& other) const
|
difference_type operator-(const iter_impl& other) const
|
||||||
@ -595,7 +576,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief access to successor
|
@brief access to successor
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
reference operator[](difference_type n) const
|
reference operator[](difference_type n) const
|
||||||
@ -626,7 +607,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief return the key of an object iterator
|
@brief return the key of an object iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
const typename object_t::key_type& key() const
|
const typename object_t::key_type& key() const
|
||||||
@ -642,7 +623,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief return the value of an iterator
|
@brief return the value of an iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
reference value() const
|
reference value() const
|
||||||
|
@ -5186,7 +5186,8 @@ typename iterator_input_adapter_factory<IteratorType>::adapter_type input_adapte
|
|||||||
// Enables ADL on begin(container) and end(container)
|
// Enables ADL on begin(container) and end(container)
|
||||||
// Encloses the using declarations in namespace for not to leak them to outside scope
|
// Encloses the using declarations in namespace for not to leak them to outside scope
|
||||||
|
|
||||||
namespace container_input_adapter_factory_impl {
|
namespace container_input_adapter_factory_impl
|
||||||
|
{
|
||||||
|
|
||||||
using std::begin;
|
using std::begin;
|
||||||
using std::end;
|
using std::end;
|
||||||
@ -5196,15 +5197,15 @@ struct container_input_adapter_factory {};
|
|||||||
|
|
||||||
template<typename ContainerType>
|
template<typename ContainerType>
|
||||||
struct container_input_adapter_factory< ContainerType,
|
struct container_input_adapter_factory< ContainerType,
|
||||||
void_t<decltype(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>()))> >
|
void_t<decltype(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>()))>>
|
||||||
{
|
{
|
||||||
using adapter_type = decltype(input_adapter(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>())));
|
using adapter_type = decltype(input_adapter(begin(std::declval<ContainerType>()), end(std::declval<ContainerType>())));
|
||||||
|
|
||||||
static adapter_type create(const ContainerType& container)
|
static adapter_type create(const ContainerType& container)
|
||||||
{
|
{
|
||||||
return input_adapter(begin(container), end(container));
|
return input_adapter(begin(container), end(container));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10924,8 +10925,10 @@ This class implements a both iterators (iterator and const_iterator) for the
|
|||||||
template<typename BasicJsonType>
|
template<typename BasicJsonType>
|
||||||
class iter_impl
|
class iter_impl
|
||||||
{
|
{
|
||||||
|
/// the iterator with BasicJsonType of different const-ness
|
||||||
|
using other_iter_impl = iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
|
||||||
/// allow basic_json to access private members
|
/// allow basic_json to access private members
|
||||||
friend iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value, typename std::remove_const<BasicJsonType>::type, const BasicJsonType>::type>;
|
friend other_iter_impl;
|
||||||
friend BasicJsonType;
|
friend BasicJsonType;
|
||||||
friend iteration_proxy<iter_impl>;
|
friend iteration_proxy<iter_impl>;
|
||||||
friend iteration_proxy_value<iter_impl>;
|
friend iteration_proxy_value<iter_impl>;
|
||||||
@ -11276,33 +11279,11 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: equal
|
@brief comparison: equal
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator==(const iter_impl<const BasicJsonType>& other) const
|
template < typename IterImpl, detail::enable_if_t < (std::is_same<IterImpl, iter_impl>::value || std::is_same<IterImpl, other_iter_impl>::value), std::nullptr_t > = nullptr >
|
||||||
{
|
bool operator==(const IterImpl& other) const
|
||||||
// if objects are not the same, the comparison is undefined
|
|
||||||
if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
|
|
||||||
{
|
|
||||||
JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers"));
|
|
||||||
}
|
|
||||||
|
|
||||||
JSON_ASSERT(m_object != nullptr);
|
|
||||||
|
|
||||||
switch (m_object->m_type)
|
|
||||||
{
|
|
||||||
case value_t::object:
|
|
||||||
return (m_it.object_iterator == other.m_it.object_iterator);
|
|
||||||
|
|
||||||
case value_t::array:
|
|
||||||
return (m_it.array_iterator == other.m_it.array_iterator);
|
|
||||||
|
|
||||||
default:
|
|
||||||
return (m_it.primitive_iterator == other.m_it.primitive_iterator);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator==(const iter_impl<typename std::remove_const<BasicJsonType>::type>& other) const
|
|
||||||
{
|
{
|
||||||
// if objects are not the same, the comparison is undefined
|
// if objects are not the same, the comparison is undefined
|
||||||
if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
|
if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object))
|
||||||
@ -11326,16 +11307,17 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: not equal
|
@brief comparison: not equal
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator!=(const iter_impl& other) const
|
template < typename IterImpl, detail::enable_if_t < (std::is_same<IterImpl, iter_impl>::value || std::is_same<IterImpl, other_iter_impl>::value), std::nullptr_t > = nullptr >
|
||||||
|
bool operator!=(const IterImpl& other) const
|
||||||
{
|
{
|
||||||
return !operator==(other);
|
return !operator==(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: smaller
|
@brief comparison: smaller
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator<(const iter_impl& other) const
|
bool operator<(const iter_impl& other) const
|
||||||
@ -11362,7 +11344,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: less than or equal
|
@brief comparison: less than or equal
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator<=(const iter_impl& other) const
|
bool operator<=(const iter_impl& other) const
|
||||||
@ -11371,7 +11353,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: greater than
|
@brief comparison: greater than
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator>(const iter_impl& other) const
|
bool operator>(const iter_impl& other) const
|
||||||
@ -11380,7 +11362,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief comparison: greater than or equal
|
@brief comparison: greater than or equal
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
bool operator>=(const iter_impl& other) const
|
bool operator>=(const iter_impl& other) const
|
||||||
@ -11389,7 +11371,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief add to iterator
|
@brief add to iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
iter_impl& operator+=(difference_type i)
|
iter_impl& operator+=(difference_type i)
|
||||||
@ -11418,7 +11400,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief subtract from iterator
|
@brief subtract from iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
iter_impl& operator-=(difference_type i)
|
iter_impl& operator-=(difference_type i)
|
||||||
@ -11427,7 +11409,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief add to iterator
|
@brief add to iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
iter_impl operator+(difference_type i) const
|
iter_impl operator+(difference_type i) const
|
||||||
@ -11438,7 +11420,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief addition of distance and iterator
|
@brief addition of distance and iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
friend iter_impl operator+(difference_type i, const iter_impl& it)
|
friend iter_impl operator+(difference_type i, const iter_impl& it)
|
||||||
@ -11449,7 +11431,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief subtract from iterator
|
@brief subtract from iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
iter_impl operator-(difference_type i) const
|
iter_impl operator-(difference_type i) const
|
||||||
@ -11460,7 +11442,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief return difference
|
@brief return difference
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
difference_type operator-(const iter_impl& other) const
|
difference_type operator-(const iter_impl& other) const
|
||||||
@ -11481,7 +11463,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief access to successor
|
@brief access to successor
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
reference operator[](difference_type n) const
|
reference operator[](difference_type n) const
|
||||||
@ -11512,7 +11494,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief return the key of an object iterator
|
@brief return the key of an object iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
const typename object_t::key_type& key() const
|
const typename object_t::key_type& key() const
|
||||||
@ -11528,7 +11510,7 @@ class iter_impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@brief return the value of an iterator
|
@brief return the value of an iterator
|
||||||
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
@pre The iterator is initialized; i.e. `m_object != nullptr`.
|
||||||
*/
|
*/
|
||||||
reference value() const
|
reference value() const
|
||||||
@ -16845,7 +16827,7 @@ class basic_json
|
|||||||
detail::parser_callback_t<basic_json>cb = nullptr,
|
detail::parser_callback_t<basic_json>cb = nullptr,
|
||||||
const bool allow_exceptions = true,
|
const bool allow_exceptions = true,
|
||||||
const bool ignore_comments = false
|
const bool ignore_comments = false
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return ::nlohmann::detail::parser<basic_json, InputAdapterType>(std::move(adapter),
|
return ::nlohmann::detail::parser<basic_json, InputAdapterType>(std::move(adapter),
|
||||||
std::move(cb), allow_exceptions, ignore_comments);
|
std::move(cb), allow_exceptions, ignore_comments);
|
||||||
@ -25390,7 +25372,7 @@ template<>
|
|||||||
inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept(
|
inline void swap<nlohmann::json>(nlohmann::json& j1, nlohmann::json& j2) noexcept(
|
||||||
is_nothrow_move_constructible<nlohmann::json>::value&&
|
is_nothrow_move_constructible<nlohmann::json>::value&&
|
||||||
is_nothrow_move_assignable<nlohmann::json>::value
|
is_nothrow_move_assignable<nlohmann::json>::value
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
j1.swap(j2);
|
j1.swap(j2);
|
||||||
}
|
}
|
||||||
|
@ -1702,3 +1702,11 @@ TEST_CASE("JSON to enum mapping")
|
|||||||
CHECK(TS_INVALID == json("what?").get<TaskState>());
|
CHECK(TS_INVALID == json("what?").get<TaskState>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef JSON_HAS_CPP_17
|
||||||
|
#undef JSON_HAS_CPP_17
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef JSON_HAS_CPP_14
|
||||||
|
#undef JSON_HAS_CPP_14
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user