extract_api.py's own extraction wasn't deterministic across machines, which CI's drift check caught immediately: JSON_HAS_RANGES auto-detects via the standard library's __cpp_lib_ranges feature-test macro, which isn't reliably gated to C++20 mode by every stdlib -- undefined under -std=c++17 with macOS's libc++, but defined under the identical flag with the Ubuntu stdlib CI uses, so parse()/accept()/from_*() extracted different signatures purely depending on which machine ran the extraction. Pinned to -DJSON_HAS_RANGES=0: the deterministic and safe choice, since pinning to 1 was tried first and found to fail to parse on a stdlib without full <ranges> support even when the macro claims otherwise. Also found and fixed a second, independent source of the same class of drift: get_identity_name() used cursor.spelling verbatim for CONVERSION_FUNCTION cursors, which libclang renders as its own internally-canonicalized form of the return type rather than what's literally written. Confirmed for json_pointer::operator string_t() spelling differently on two machines pinned to the identical libclang==18.1.1 wheel, with the JSON_HAS_RANGES fix above ruled out as the cause. Now derived from the cursor's own raw source text instead, immune to libclang's dependent-type resolution differences and incidentally more readable than the libclang-internal forms it replaces. Bumped SURFACE_FORMAT_VERSION to 3 and regenerated all 27 history snapshots and the committed api_surface.json; both fixes are documented in tools/api_checker/history/README.md's format-history log. Also fixes diff_api.py's format_version guard, which only compared the two loaded surfaces against each other and never against SURFACE_FORMAT_VERSION (what this build actually understands) -- two surfaces on the same, newer-than-expected format_version would have silently passed the guard. Remaining fixes are the concretely actionable findings from Codacy's review of the new tools/api_checker/ files: unused imports/variables, a stray f-string with no placeholders. Left the docstring-formatting nitpicks (pydocstyle D2xx/D4xx) and generic subprocess-usage notices alone -- the former has no established convention elsewhere in this codebase's Python tooling to conform to, and the latter are inherent to a dev tool that shells out to git/clang with developer-controlled arguments, not user input. Signed-off-by: Niels Lohmann <mail@nlohmann.me> Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Niels Lohmann <mail@nlohmann.me>
63 KiB
API Changes
This page is a per-release reference of changes to the public API surface, derived by
diffing the recorded snapshots under tools/api_checker/history/ (see
tools/api_checker/README.md).
It complements, and does not replace, the release notes: the release notes
are a curated, prose summary of everything notable about a release; this page tracks the
public API specifically, function by function, covering v3.1.0 through v3.12.0 (the range
currently backfilled into tools/api_checker/history/).
!!! info "How to read this page"
Each release lists the functions/types whose public declaration changed, grouped by name
(not by individual overload). The italicized sentence is a best-effort summary of the
*mechanical* signature diff; a handful of entries were individually researched and cross-
checked against the source and documentation earlier in this investigation, but most were
generated from the diff shape alone, so treat the sentence as a hint about where to look,
not a substitute for reading the linked page. Purely cosmetic changes (annotation macros
such as `JSON_NODISCARD` being renamed or added library-wide, or a redundant top-level
`const` on a by-value parameter) are omitted from the per-function list and instead named
in a single collapsed line per release, since they carry no behavioral or contract
difference. This is a textual, not semantic, diff (see `extract_api.py`'s `identity_key()`
docstring) -- a name not being listed for a release means its declaration text did not
change in that release.
3.12.0
nlohmann::basic_json::bjdata_version_t
New enum (draft2/draft3) selecting which BJData ND-array draft to_bjdata() encodes for.
- New symbol.
using bjdata_version_t = detail::bjdata_version_t
nlohmann::basic_json::diff
Changes the path parameter's type from std::string to string_t, so it respects a custom string type instead of hardcoding std::string.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json diff(const basic_json& source, const basic_json& target, const - std::string& + string_t& path = "")
nlohmann::basic_json::to_bjdata
Adds a bjdata_version_t version parameter (default draft2) to select between BJData draft 2 and draft 3 ND-array encoding.
- Changed:
static std::vector<std::uint8_t> to_bjdata(const basic_json& j, const bool use_size = false, const bool use_type = - false) + false, const bjdata_version_t version = bjdata_version_t::draft2)
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::basic_json, nlohmann::basic_json::parse.
3.11.3
nlohmann::basic_json::operator ValueType
The std::any exclusion from this conversion operator's SFINAE becomes conditional on JSON_HAS_STATIC_RTTI instead of unconditional.
- Changed:
template < typename ValueType, typename std::enable_if < detail::conjunction < detail::negation<std::is_pointer<ValueType>>, detail::negation<std::is_same<ValueType, std::nullptr_t + && JSON_HAS_STATIC_RTTI detail::negation<std::is_same<ValueType, std::any>>, #endif detail::is_detected_lazy<detail::get_template_function, const basic_json_t&, ValueType> >::value, int >::type = 0 > JSON
nlohmann::basic_json::operator=
Extends the noexcept specification to also depend on the new json_base_class_t (CustomBaseClass) template parameter's move-assignment.
- Changed:
basic_json& operator=(basic_json other) noexcept ( std::is_nothrow_move_constructible<value_t>::value&& std::is_nothrow_move_assignable<value_t>::value&& std::is_nothrow_move_const - std::is_nothrow_move_assignable<json_value>::value + std::is_nothrow_move_assignable<json_value>::value&& std::is_nothrow_move_assignable<json_base_class_t>::value )
3.11.2
nlohmann::basic_json::value
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
- JSON_HEDLEY_NON_NULL(3) string_t value(const json_pointer& ptr, const char* + template < class ValueType, class BasicJsonType, class ReturnType = typename value_return_type<ValueType>::type, detail::enable_if_t < detail::is_basic_json<BasicJsonType>::value & default_value) const
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::at, nlohmann::basic_json::contains.
3.11.0
nlohmann::operator!=
Removed from the public API.
- Removes 1 overload.
friend bool operator!=(json_pointer const& lhs, json_pointer const& rhs) noexcept
nlohmann::operator<
Updates the noexcept specification.
- Changed:
friend bool operator<(const_reference lhs, const_reference rhs) noexcept { - const auto lhs_type = lhs.type(); const auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (lhs_type) { case value_t::array: return (*lhs.m_value.array) < (*rhs.m_value + JSON_IMPLEMENT_OPERATOR( <, false, false, operator<(lhs_type, rhs_type)) }
nlohmann::operator<<
Adds a new overload.
- Adds 1 new overload.
friend std::ostream& operator<<(std::ostream& o, const json_pointer& ptr) { o << ptr.to_string(); return o; }
nlohmann::operator<=
Updates the noexcept specification.
- Changed:
friend bool operator<=(const_reference lhs, const_reference rhs) noexcept { + if (compares_unordered(lhs, rhs, true)) { return false; } return !(rhs < lhs); }
nlohmann::operator==
Removed from the public API.
- Removes 1 overload.
friend bool operator==(json_pointer const& lhs, json_pointer const& rhs) noexcept
nlohmann::basic_json::at
Adds 4 new overloads.
- Adds 4 new overloads.
template<class KeyType, detail::enable_if_t< detail::is_usable_as_basic_json_key_type<basic_json_t, KeyType>::value, int> = 0> const_reference at(KeyType && key) consttemplate<class KeyType, detail::enable_if_t< detail::is_usable_as_basic_json_key_type<basic_json_t, KeyType>::value, int> = 0> reference at(KeyType && key)template<typename BasicJsonType> JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) const_reference at(const ::nlohmann::json_pointer<BasicJsonType>& ptr) consttemplate<typename BasicJsonType> JSON_HEDLEY_DEPRECATED_FOR(3.11.0, basic_json::json_pointer or nlohmann::json_pointer<basic_json::string_t>) reference at(const ::nlohmann::json_pointer<BasicJsonType>& ptr)
nlohmann::basic_json::count
Changes parameter KeyT&& key to const typename object_t::key_type& key.
- Changed:
- template<typename KeyT> size_type count(KeyT&& + size_type count(const typename object_t::key_type& key) const
nlohmann::basic_json::default_object_comparator_t
New addition to the public API.
- New symbol.
using default_object_comparator_t = std::less<>
nlohmann::basic_json::find
Changes parameter KeyT&& key to const typename object_t::key_type& key.
- Changed:
- template<typename KeyT> const_iterator find(KeyT&& + const_iterator find(const typename object_t::key_type& key) const
nlohmann::basic_json::from_bjdata
New addition to the public API.
- New symbols (2 overloads).
template<typename InputType> JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json from_bjdata(InputType&& i, const bool strict = true, const bool allow_exceptions = true)template<typename IteratorType> JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json from_bjdata(IteratorType first, IteratorType last, const bool strict = true, const bool allow_exceptions = true)
nlohmann::basic_json::json_pointer
Changes the declaration; see the signature diff for details.
- Changed:
using json_pointer = - ::nlohmann::json_pointer<basic_json> + ::nlohmann::json_pointer<StringType>
nlohmann::basic_json::object_comparator_t
Changes the declaration; see the signature diff for details.
- Changed:
using object_comparator_t = - std::less<> + detail::actual_object_comparator_t<basic_json>
nlohmann::basic_json::object_t
Changes the declaration; see the signature diff for details.
- Changed:
using object_t = ObjectType<StringType, basic_json, - object_comparator_t, + default_object_comparator_t, AllocatorType<std::pair<const StringType, basic_json>>>
nlohmann::basic_json::operator ValueType
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
template < typename ValueType, typename std::enable_if < detail::conjunction < detail::negation<std::is_pointer<ValueType>>, detail::negation<std::is_same<ValueType, - detail::json_ref<basic_json>>>, detail::negation<std::is_same<ValueType, typename string_t::value_type>>, detail::negation<detail::is_basic_json<ValueType>>, detail::negation<std:: + std::nullptr_t>>, detail::negation<std::is_same<ValueType, detail::json_ref<basic_json>>>, detail::negation<std::is_same<ValueType, typename string_t::value_type>>, detail::negatio #endif detail::is_detected_lazy<detail::get_template_function, const basic_json_t&, ValueType> >::value, int >::type = 0 > JSON_EXPLICIT operator ValueType() const
nlohmann::basic_json::patch_inplace
New addition to the public API.
- New symbol.
void patch_inplace(const basic_json& json_patch)
nlohmann::basic_json::to_bjdata
New addition to the public API.
- New symbols (3 overloads).
static std::vector<std::uint8_t> to_bjdata(const basic_json& j, const bool use_size = false, const bool use_type = false)static void to_bjdata(const basic_json& j, detail::output_adapter<char> o, const bool use_size = false, const bool use_type = false)static void to_bjdata(const basic_json& j, detail::output_adapter<std::uint8_t> o, const bool use_size = false, const bool use_type = false)
nlohmann::json_pointer::back
Changes the declaration; see the signature diff for details.
- Changed:
const - std::string& + string_t& back() const
nlohmann::json_pointer::json_pointer
Changes parameter const std::string& s = "" to const string_t& s = "".
- Changed:
explicit json_pointer(const - std::string& + string_t& s = "")
nlohmann::json_pointer::operator std::string
Removed from the public API.
- Removes 1 overload.
operator std::string() const
nlohmann::json_pointer::operator string_t
New addition to the public API.
- New symbol.
JSON_HEDLEY_DEPRECATED_FOR(3.11.0, to_string()) operator string_t() const
nlohmann::json_pointer::push_back
Changes parameter const std::string& token to const string_t& token.
- Changed:
void push_back(const - std::string& + string_t& token)
nlohmann::json_pointer::string_t
New addition to the public API.
- New symbol.
using string_t = typename string_t_helper<RefStringType>::type
nlohmann::json_pointer::to_string
Changes the declaration; see the signature diff for details.
- Changed:
- std::string + string_t to_string() const
nlohmann::ordered_map::at
Changes parameter const Key& key to const key_type& key.
- Changed:
T& at(const - Key& + key_type& key)
nlohmann::ordered_map::count
Changes parameter const Key& key to const key_type& key.
- Changed:
size_type count(const - Key& + key_type& key) const
nlohmann::ordered_map::emplace
Adds a new overload.
- Adds 1 new overload.
template<class KeyType, detail::enable_if_t< detail::is_usable_as_key_type<key_compare, key_type, KeyType>::value, int> = 0> std::pair<iterator, bool> emplace(KeyType && key, T && t)
nlohmann::ordered_map::find
Changes parameter const Key& key to const key_type& key.
- Changed:
const_iterator find(const - Key& + key_type& key) const
nlohmann::ordered_map::key_compare
New addition to the public API.
- New symbol.
using key_compare = std::equal_to<>
nlohmann::ordered_map::operator[]
Changes parameter const Key& key to const key_type& key.
- Changed:
T& operator[](const - Key& + key_type& key)
nlohmann::ordered_map::ordered_map
Changes parameter const Allocator& alloc = Allocator() to const Allocator& alloc.
- Changed:
- ordered_map(const Allocator& alloc = Allocator()) + explicit ordered_map(const Allocator& alloc) noexcept(noexcept(Container(alloc)))
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::contains, nlohmann::basic_json::erase, nlohmann::basic_json::operator[], nlohmann::basic_json::value, nlohmann::json_pointer::operator/=, nlohmann::operator/, nlohmann::ordered_map::erase.
3.10.5
nlohmann::basic_json::update
Adds an optional bool merge_objects parameter (default false).
- Changed:
void update(const_iterator first, const_iterator - last) + last, bool merge_objects = false)
nlohmann::ordered_map::const_iterator
New addition to the public API.
- New symbol.
using const_iterator = typename Container::const_iterator
nlohmann::ordered_map::erase
Adds a new overload.
- Adds 1 new overload.
iterator erase(iterator first, iterator last)
nlohmann::ordered_map::iterator
New addition to the public API.
- New symbol.
using iterator = typename Container::iterator
nlohmann::ordered_map::size_type
New addition to the public API.
- New symbol.
using size_type = typename Container::size_type
nlohmann::ordered_map::value_type
New addition to the public API.
- New symbol.
using value_type = typename Container::value_type
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::operator/.
3.10.0
nlohmann::operator<
Updates the noexcept specification.
- Changed:
friend bool operator<(const_reference lhs, const_reference rhs) noexcept { const auto lhs_type = lhs.type(); const auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (l + case value_t::discarded: default: return false; } } else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_float) { return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs
nlohmann::adl_serializer::from_json
Removes a parameter from the signature.
- Changed:
template<typename BasicJsonType, typename - ValueType> static auto from_json(BasicJsonType&& j, ValueType& val) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) -> decltype(::nlohmann::from_jso + TargetType = ValueType> static auto from_json(BasicJsonType && j) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), detail::identity_tag<TargetType> {}))) ->
nlohmann::adl_serializer::to_json
Changes parameter ValueType&& val to TargetType && val.
- Changed:
template<typename BasicJsonType, typename - ValueType> static auto to_json(BasicJsonType& j, ValueType&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val)))) -> decltype(::nlohmann::to_json(j, std:: + TargetType = ValueType> static auto to_json(BasicJsonType& j, TargetType && val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<TargetType>(val)))) -> decltype(::nlohmann:: void())
nlohmann::basic_json::get
Adds a new JSON_HAS_CPP_14 parameter.
- Changed:
template < typename - BasicJsonType, detail::enable_if_t < !std::is_same<BasicJsonType, basic_json>::value&& detail::is_basic_json<BasicJsonType>::value, int > = 0 > BasicJsonType get() const + ValueTypeCV, typename ValueType = detail::uncvref_t<ValueTypeCV>> #if defined(JSON_HAS_CPP_14) constexpr #endif auto get() const noexcept( noexcept(std::declval<const basic_json_t&
nlohmann::basic_json::operator ValueType
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
template < typename ValueType, typename std::enable_if < - !std::is_pointer<ValueType>::value&& !std::is_same<ValueType, detail::json_ref<basic_json>>::value&& !std::is_same<ValueType, typename string_t::value_type>::value&& !detail::is_ba + detail::conjunction < detail::negation<std::is_pointer<ValueType>>, detail::negation<std::is_same<ValueType, detail::json_ref<basic_json>>>, detail::negation<std::is_same<ValueType int >::type = 0 > JSON_EXPLICIT operator ValueType() const
nlohmann::basic_json::to_bson
Changes the declaration; see the signature diff for details.
- Changed:
static - std::vector<uint8_t> + std::vector<std::uint8_t> to_bson(const basic_json& j)
nlohmann::basic_json::to_cbor
Changes the declaration; see the signature diff for details.
- Changed:
static - std::vector<uint8_t> + std::vector<std::uint8_t> to_cbor(const basic_json& j)
nlohmann::basic_json::to_msgpack
Changes the declaration; see the signature diff for details.
- Changed:
static - std::vector<uint8_t> + std::vector<std::uint8_t> to_msgpack(const basic_json& j)
nlohmann::basic_json::to_ubjson
Changes the declaration; see the signature diff for details.
- Changed:
static - std::vector<uint8_t> + std::vector<std::uint8_t> to_ubjson(const basic_json& j, const bool use_size = false, const bool use_type = false)
nlohmann::byte_container_with_subtype::set_subtype
Changes parameter std::uint8_t subtype to subtype_type subtype_.
- Changed:
void - set_subtype(std::uint8_t subtype) + set_subtype(subtype_type subtype_) noexcept
nlohmann::byte_container_with_subtype::subtype
Updates the noexcept specification.
- Changed:
constexpr - std::uint8_t + subtype_type subtype() const noexcept
nlohmann::byte_container_with_subtype::subtype_type
New addition to the public API.
- New symbol.
using subtype_type = std::uint64_t
nlohmann::json_sax::json_sax
New addition to the public API.
- New symbols (3 overloads).
json_sax() = defaultjson_sax(const json_sax&) = defaultjson_sax(json_sax&&) noexcept = default
nlohmann::json_sax::operator=
New addition to the public API.
- New symbols (2 overloads).
json_sax& operator=(const json_sax&) = defaultjson_sax& operator=(json_sax&&) noexcept = default
nlohmann::ordered_map::insert
Adds a new overload.
- Adds 1 new overload.
template<typename InputIt, typename = require_input_iter<InputIt>> void insert(InputIt first, InputIt last)
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::binary, nlohmann::byte_container_with_subtype::byte_container_with_subtype.
3.9.1
nlohmann::ordered_map::at
New addition to the public API.
- New symbols (2 overloads).
T& at(const Key& key)const T& at(const Key& key) const
nlohmann::ordered_map::count
New addition to the public API.
- New symbol.
size_type count(const Key& key) const
nlohmann::ordered_map::emplace
Changes parameter key_type&& key to const key_type& key.
- Changed:
std::pair<iterator, bool> - emplace(key_type&& + emplace(const key_type& key, T&& t)
nlohmann::ordered_map::erase
Adds a new overload.
- Adds 1 new overload.
iterator erase(iterator pos)
nlohmann::ordered_map::find
New addition to the public API.
- New symbols (2 overloads).
const_iterator find(const Key& key) constiterator find(const Key& key)
nlohmann::ordered_map::insert
New addition to the public API.
- New symbols (2 overloads).
std::pair<iterator, bool> insert( const value_type& value )std::pair<iterator, bool> insert( value_type&& value )
nlohmann::ordered_map::operator[]
Changes parameter Key&& key to const Key& key.
- Changed:
T& - operator[](Key&& + operator[](const Key& key)
3.9.0
nlohmann::operator<
Updates the noexcept specification.
- Changed:
friend bool operator<(const_reference lhs, const_reference rhs) noexcept { const auto lhs_type = lhs.type(); const auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (l - and rhs_type == value_t::number_float) { return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float; } else if (lhs_type == value_t::number_float and + && rhs_type == value_t::number_float) { return static_cast<number_float_t>(lhs.m_value.number_integer) < rhs.m_value.number_float; } else if (lhs_type == value_t::number_float && r rhs_type == value_t::number_integer) { return static_cast<number_integer_t>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer; } return operator<(lhs_type, rhs_type); }
nlohmann::operator<=
Updates the noexcept specification.
- Changed:
friend bool operator<=(const_reference lhs, const_reference rhs) noexcept { return - not (rhs + !(rhs < lhs); }
nlohmann::swap
New addition to the public API.
- New symbol.
friend void swap(reference left, reference right) noexcept ( std::is_nothrow_move_constructible<value_t>::value&& std::is_nothrow_move_assignable<value_t>::value&& std::is_nothrow_move_constructible<json_value>::value&& [...]
nlohmann::adl_serializer::to_json
Updates the noexcept specification.
- Changed:
- template <typename + template<typename BasicJsonType, typename ValueType> static auto to_json(BasicJsonType& j, ValueType&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val)))) -> decltype(::nl
nlohmann::basic_json::accept
Changes the declaration; see the signature diff for details.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DEPRECATED_FOR(3.8.0, accept(ptr, ptr + len)) static bool accept(detail::span_input_adapter&& - i) + i, const bool ignore_comments = false)
nlohmann::basic_json::cbor_tag_handler_t
New addition to the public API.
- New symbol.
using cbor_tag_handler_t = detail::cbor_tag_handler_t
nlohmann::basic_json::from_cbor
Changes the declaration; see the signature diff for details.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_cbor(ptr, ptr + len)) static basic_json from_cbor(detail::span_input_adapter&& i, const bool strict = true, co - true) + true, const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error)
nlohmann::basic_json::get
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
- template<typename BasicJsonType, detail::enable_if_t< not std::is_same<BasicJsonType, basic_json>::value and detail::is_basic_json<BasicJsonType>::value, int> = 0> + template < typename BasicJsonType, detail::enable_if_t < !std::is_same<BasicJsonType, basic_json>::value&& detail::is_basic_json<BasicJsonType>::value, int > = 0 > BasicJsonType get() const
nlohmann::basic_json::get_ptr
Updates the noexcept specification.
- Changed:
- template<typename PointerType, typename std::enable_if< std::is_pointer<PointerType>::value and std::is_const<typename std::remove_pointer<PointerType>::type>::value, int>::type = + template < typename PointerType, typename std::enable_if < std::is_pointer<PointerType>::value&& std::is_const<typename std::remove_pointer<PointerType>::type>::value, int >::type constexpr auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
nlohmann::basic_json::get_ref
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
- template<typename ReferenceType, typename std::enable_if< std::is_reference<ReferenceType>::value and std::is_const<typename std::remove_reference<ReferenceType>::type>::value, int + template < typename ReferenceType, typename std::enable_if < std::is_reference<ReferenceType>::value&& std::is_const<typename std::remove_reference<ReferenceType>::type>::value, in ReferenceType get_ref() const
nlohmann::basic_json::operator ValueType
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
template < typename ValueType, typename std::enable_if < - not std::is_pointer<ValueType>::value and not std::is_same<ValueType, detail::json_ref<basic_json>>::value and not std::is_same<ValueType, typename string_t::value_type>::value and + !std::is_pointer<ValueType>::value&& !std::is_same<ValueType, detail::json_ref<basic_json>>::value&& !std::is_same<ValueType, typename string_t::value_type>::value&& !detail::is_ba operator ValueType() const
nlohmann::basic_json::operator=
Updates the noexcept specification.
- Changed:
basic_json& operator=(basic_json other) noexcept ( - std::is_nothrow_move_constructible<value_t>::value and std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible<json_value>::value and + std::is_nothrow_move_constructible<value_t>::value&& std::is_nothrow_move_assignable<value_t>::value&& std::is_nothrow_move_constructible<json_value>::value&& std::is_nothrow_move_assignable<json_value>::value )
nlohmann::basic_json::parse
Changes the declaration; see the signature diff for details.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DEPRECATED_FOR(3.8.0, parse(ptr, ptr + len)) static basic_json parse(detail::span_input_adapter&& i, const parser_callback_t cb = nullptr - true) + true, const bool ignore_comments = false)
nlohmann::basic_json::sax_parse
Changes the declaration; see the signature diff for details.
- Changed:
template <typename InputType, typename SAX> JSON_HEDLEY_NON_NULL(2) static bool sax_parse(InputType&& i, SAX* sax, input_format_t format = input_format_t::json, const bool strict = - true) + true, const bool ignore_comments = false)
nlohmann::ordered_map::Container
New addition to the public API.
- New symbol.
using Container = std::vector<std::pair<const Key, T>, Allocator>
nlohmann::ordered_map::emplace
New addition to the public API.
- New symbol.
std::pair<iterator, bool> emplace(key_type&& key, T&& t)
nlohmann::ordered_map::erase
New addition to the public API.
- New symbol.
size_type erase(const Key& key)
nlohmann::ordered_map::key_type
New addition to the public API.
- New symbol.
using key_type = Key
nlohmann::ordered_map::mapped_type
New addition to the public API.
- New symbol.
using mapped_type = T
nlohmann::ordered_map::operator[]
New addition to the public API.
- New symbol.
T& operator[](Key&& key)
nlohmann::ordered_map::ordered_map
New addition to the public API.
- New symbols (3 overloads).
ordered_map(const Allocator& alloc = Allocator())ordered_map(std::initializer_list<T> init, const Allocator& alloc = Allocator() )template <class It> ordered_map(It first, It last, const Allocator& alloc = Allocator())
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::basic_json, nlohmann::basic_json::contains, nlohmann::basic_json::erase, nlohmann::basic_json::get_to, nlohmann::basic_json::swap, nlohmann::basic_json::value.
3.8.0
nlohmann::operator<
Updates the noexcept specification.
- Changed:
friend bool operator<(const_reference lhs, const_reference rhs) noexcept { const auto lhs_type = lhs.type(); const auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (l + case value_t::binary: return (*lhs.m_value.binary) < (*rhs.m_value.binary); default: return false; } } else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) { return static_cast<number_float_t>(lhs.m_value.number_integer) < rh
nlohmann::operator<<
Adds a new operator>>(std::istream&, basic_json&) parameter.
- Changed:
- JSON_HEDLEY_DEPRECATED(3.0.0) + JSON_HEDLEY_DEPRECATED_FOR(3.0.0, operator>>(std::istream&, basic_json&)) friend std::istream& operator<<(basic_json& j, std::istream& i) { return operator>>(i, j);
nlohmann::operator>>
Adds a new operator<<(std::ostream&, const basic_json&) parameter.
- Changed:
- JSON_HEDLEY_DEPRECATED(3.0.0) + JSON_HEDLEY_DEPRECATED_FOR(3.0.0, operator<<(std::ostream&, const basic_json&)) friend std::ostream& operator>>(const basic_json& j, std::ostream& o)
nlohmann::basic_json::accept
Changes the parameter list.
- Changed:
- static bool accept(detail::input_adapter&& + JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DEPRECATED_FOR(3.8.0, accept(ptr, ptr + len)) static bool accept(detail::span_input_adapter&& i)
nlohmann::basic_json::basic_json
- Adds 1 new overload.
template <typename JsonRef, detail::enable_if_t<detail::conjunction<detail::is_json_ref<JsonRef>, std::is_same<typename JsonRef::value_type, basic_json>>::value, int> = 0 > basic_json(const JsonRef& ref) - Removes 1 overload.
basic_json(const detail::json_ref<basic_json>& ref)
nlohmann::basic_json::binary
New addition to the public API.
- New symbols (4 overloads).
JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json binary(const typename binary_t::container_type& init)JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json binary(const typename binary_t::container_type& init, std::uint8_t subtype)JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json binary(typename binary_t::container_type&& init)JSON_HEDLEY_WARN_UNUSED_RESULT static basic_json binary(typename binary_t::container_type&& init, std::uint8_t subtype)
nlohmann::basic_json::binary_t
New addition to the public API.
- New symbol.
using binary_t = nlohmann::byte_container_with_subtype<BinaryType>
nlohmann::basic_json::from_bson
Removes a parameter from the signature.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_bson(detail::input_adapter&& + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_bson(ptr, ptr + len)) static basic_json from_bson(detail::span_input_adapter&& i, const bool strict = true, const bool allow_exceptions = true)
nlohmann::basic_json::from_cbor
Removes a parameter from the signature.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_cbor(detail::input_adapter&& + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_cbor(ptr, ptr + len)) static basic_json from_cbor(detail::span_input_adapter&& i, const bool strict = true, const bool allow_exceptions = true)
nlohmann::basic_json::from_msgpack
Removes a parameter from the signature.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_msgpack(detail::input_adapter&& + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_msgpack(ptr, ptr + len)) static basic_json from_msgpack(detail::span_input_adapter&& i, const bool strict = true, const bool allow_exceptions = true)
nlohmann::basic_json::from_ubjson
Removes a parameter from the signature.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json from_ubjson(detail::input_adapter&& + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_ubjson(ptr, ptr + len)) static basic_json from_ubjson(detail::span_input_adapter&& i, const bool strict = true, const bool allow_exceptions = true)
nlohmann::basic_json::get_binary
New addition to the public API.
- New symbols (2 overloads).
binary_t& get_binary()const binary_t& get_binary() const
nlohmann::basic_json::is_binary
New addition to the public API.
- New symbol.
constexpr bool is_binary() const noexcept
nlohmann::basic_json::iterator_wrapper
Adds a new items() parameter.
- Changed:
- JSON_HEDLEY_DEPRECATED(3.1.0) + JSON_HEDLEY_DEPRECATED_FOR(3.1.0, items()) static iteration_proxy<const_iterator> iterator_wrapper(const_reference ref) noexcept
nlohmann::basic_json::operator ValueType
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
template < typename ValueType, typename std::enable_if < not std::is_pointer<ValueType>::value and not std::is_same<ValueType, detail::json_ref<basic_json>>::value and not std::is_ - #ifndef _MSC_VER and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value #if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VE + and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value #if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER >
nlohmann::basic_json::parse
Removes a parameter from the signature.
- Changed:
JSON_HEDLEY_WARN_UNUSED_RESULT - static basic_json parse(detail::input_adapter&& + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, parse(ptr, ptr + len)) static basic_json parse(detail::span_input_adapter&& i, const parser_callback_t cb = nullptr, const bool allow_exceptions = true)
nlohmann::basic_json::parse_event_t
Changes the declaration; see the signature diff for details.
- Changed:
using parse_event_t = - typename parser::parse_event_t + detail::parse_event_t
nlohmann::basic_json::parser_callback_t
Changes the declaration; see the signature diff for details.
- Changed:
using parser_callback_t = - typename parser::parser_callback_t + detail::parser_callback_t<basic_json>
nlohmann::basic_json::sax_parse
Changes the declaration; see the signature diff for details.
- Changed:
template <typename - SAX> JSON_HEDLEY_NON_NULL(2) static bool sax_parse(detail::input_adapter&& + InputType, typename SAX> JSON_HEDLEY_NON_NULL(2) static bool sax_parse(InputType&& i, SAX* sax, input_format_t format = input_format_t::json, const bool strict = true)
nlohmann::basic_json::swap
Adds 2 new overloads.
- Adds 2 new overloads.
void swap(binary_t& other)void swap(typename binary_t::container_type& other)
nlohmann::byte_container_with_subtype::byte_container_with_subtype
New addition to the public API.
- New symbols (5 overloads).
byte_container_with_subtype() noexcept(noexcept(container_type()))byte_container_with_subtype(const container_type& b) noexcept(noexcept(container_type(b)))byte_container_with_subtype(const container_type& b, std::uint8_t subtype) noexcept(noexcept(container_type(b)))byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b))))
nlohmann::byte_container_with_subtype::clear_subtype
New addition to the public API.
- New symbol.
void clear_subtype() noexcept
nlohmann::byte_container_with_subtype::container_type
New addition to the public API.
- New symbol.
using container_type = BinaryType
nlohmann::byte_container_with_subtype::has_subtype
New addition to the public API.
- New symbol.
constexpr bool has_subtype() const noexcept
nlohmann::byte_container_with_subtype::operator!=
New addition to the public API.
- New symbol.
bool operator!=(const byte_container_with_subtype& rhs) const
nlohmann::byte_container_with_subtype::operator==
New addition to the public API.
- New symbol.
bool operator==(const byte_container_with_subtype& rhs) const
nlohmann::byte_container_with_subtype::set_subtype
New addition to the public API.
- New symbol.
void set_subtype(std::uint8_t subtype) noexcept
nlohmann::byte_container_with_subtype::subtype
New addition to the public API.
- New symbol.
constexpr std::uint8_t subtype() const noexcept
nlohmann::json_sax::binary
New addition to the public API.
- New symbol.
virtual bool binary(binary_t& val) = 0
nlohmann::json_sax::binary_t
New addition to the public API.
- New symbol.
using binary_t = typename BasicJsonType::binary_t
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::value, nlohmann::json_pointer::operator/=, nlohmann::operator/.
3.7.1
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::contains, nlohmann::basic_json::get, nlohmann::json_pointer::back.
3.7.0
nlohmann::operator<
Updates the noexcept specification.
- Changed:
friend bool operator<(const_reference lhs, const_reference rhs) noexcept { const auto lhs_type = lhs.type(); const auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (l - *lhs.m_value.object < *rhs.m_value.object; case value_t::null: return false; case value_t::string: return *lhs.m_value.string < *rhs.m_value.string; case value_t::boolean: return l + (*lhs.m_value.object) < (*rhs.m_value.object); case value_t::null: return false; case value_t::string: return (*lhs.m_value.string) < (*rhs.m_value.string); case value_t::boolean: default: return false; } } else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) { return static_cast<number_float_t>(lhs.m_value.number_integer) < rh
nlohmann::basic_json::contains
Changes parameter KeyT&& key to const json_pointer& ptr.
- Changed:
- template<typename KeyT> bool contains(KeyT&& key) + bool contains(const json_pointer& ptr) const
nlohmann::basic_json::emplace_back
Changes the declaration; see the signature diff for details.
- Changed:
template<class... Args> - void + reference emplace_back(Args&& ... args)
nlohmann::basic_json::get_to
Adds a new overload.
- Adds 1 new overload.
template < typename T, std::size_t N, typename Array = T (&)[N], detail::enable_if_t < detail::has_from_json<basic_json_t, Array>::value, int > = 0 > Array get_to(T (&v)[N]) const noexcept(noexcept(JSONSerializer<Array>: [...]
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::array, nlohmann::basic_json::diff, nlohmann::basic_json::from_bson, nlohmann::basic_json::from_cbor, nlohmann::basic_json::from_msgpack, nlohmann::basic_json::from_ubjson, nlohmann::basic_json::iterator_wrapper, nlohmann::basic_json::meta, nlohmann::basic_json::object, nlohmann::basic_json::operator[], nlohmann::basic_json::parse, nlohmann::basic_json::sax_parse, nlohmann::basic_json::type_name, nlohmann::basic_json::value, nlohmann::operator<<, nlohmann::operator>>.
3.6.1
nlohmann::operator<
Updates the noexcept specification.
- Changed:
friend bool operator<(const_reference lhs, const_reference rhs) noexcept { const auto lhs_type = lhs.type(); const auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (l - *lhs.m_value.array < *rhs.m_value.array; + (*lhs.m_value.array) < (*rhs.m_value.array); case value_t::object: return *lhs.m_value.object < *rhs.m_value.object; case value_t::null: return false; case value_t::string: return *lhs.m_value.string < *rhs.m_value.string; ca
3.6.0
nlohmann::operator/
New addition to the public API.
- New symbols (3 overloads).
friend json_pointer operator/(const json_pointer& lhs, const json_pointer& rhs)friend json_pointer operator/(const json_pointer& ptr, std::size_t array_index)friend json_pointer operator/(const json_pointer& ptr, std::string token)
nlohmann::operator<
Updates the noexcept specification.
- Changed:
friend bool operator<(const_reference lhs, const_reference rhs) noexcept { const auto lhs_type = lhs.type(); const auto rhs_type = rhs.type(); if (lhs_type == rhs_type) { switch (l - (*lhs.m_value.array) < (*rhs.m_value.array); + *lhs.m_value.array < *rhs.m_value.array; case value_t::object: return *lhs.m_value.object < *rhs.m_value.object; case value_t::null: return false; case value_t::string: return *lhs.m_value.string < *rhs.m_value.string; ca
nlohmann::basic_json::contains
New addition to the public API.
- New symbol.
template<typename KeyT> bool contains(KeyT&& key) const
nlohmann::basic_json::operator ValueType
Changes the declaration; see the signature diff for details.
- Changed:
template < typename ValueType, typename std::enable_if < not std::is_pointer<ValueType>::value and not std::is_same<ValueType, detail::json_ref<basic_json>>::value and not std::is_ - defined(_MSC_VER) and _MSC_VER <= 1914 + (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER <= 1914)) and not std::is_same<ValueType, typename std::string_view>::value #endif #endif and detail::is_detected<detail::get_template_function, const basic_json_t&, ValueType>::value , int
nlohmann::json_pointer::array_index
Removed from the public API.
- Removes 1 overload.
static int array_index(const std::string& s)
nlohmann::json_pointer::back
New addition to the public API.
- New symbol.
const std::string& back()
nlohmann::json_pointer::empty
New addition to the public API.
- New symbol.
bool empty() const noexcept
nlohmann::json_pointer::operator/=
New addition to the public API.
- New symbols (3 overloads).
json_pointer& operator/=(const json_pointer& ptr)json_pointer& operator/=(std::size_t array_index)json_pointer& operator/=(std::string token)
nlohmann::json_pointer::parent_pointer
New addition to the public API.
- New symbol.
json_pointer parent_pointer() const
nlohmann::json_pointer::pop_back
New addition to the public API.
- New symbol.
void pop_back()
nlohmann::json_pointer::push_back
New addition to the public API.
- New symbols (2 overloads).
void push_back(const std::string& token)void push_back(std::string&& token)
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::array, nlohmann::basic_json::diff, nlohmann::basic_json::from_bson, nlohmann::basic_json::from_cbor, nlohmann::basic_json::from_msgpack, nlohmann::basic_json::from_ubjson, nlohmann::basic_json::meta, nlohmann::basic_json::object, nlohmann::basic_json::parse, nlohmann::operator<<.
3.5.0
nlohmann::basic_json::merge_patch
Changes parameter const basic_json& patch to const basic_json& apply_patch.
- Changed:
void merge_patch(const basic_json& - patch) + apply_patch)
3.4.0
nlohmann::adl_serializer::from_json
Updates the noexcept specification.
- Changed:
template<typename BasicJsonType, typename ValueType> static auto from_json(BasicJsonType&& j, ValueType& val) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j - decltype( ::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void() ) + decltype(::nlohmann::from_json(std::forward<BasicJsonType>(j), val), void())
nlohmann::basic_json::dump
Adds an optional const error_handler_t error_handler parameter (default error_handler_t::strict).
- Changed:
string_t dump(const int indent = -1, const char indent_char = ' ', const bool ensure_ascii = - false) + false, const error_handler_t error_handler = error_handler_t::strict) const
nlohmann::basic_json::error_handler_t
New addition to the public API.
- New symbol.
using error_handler_t = detail::error_handler_t
nlohmann::basic_json::from_bson
New addition to the public API.
- New symbols (2 overloads).
static basic_json from_bson(detail::input_adapter&& i, const bool strict = true, const bool allow_exceptions = true)template<typename A1, typename A2, detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value, int> = 0> static basic_json from_bson(A1 && a1, A2 && a2, const bool strict = true, const bool allow_exc [...]
nlohmann::basic_json::operator=
Updates the noexcept specification.
- Changed:
- reference& + basic_json& operator=(basic_json other) noexcept ( std::is_nothrow_move_constructible<value_t>::value and std::is_nothrow_move_assignable<value_t>::value and std::is_nothrow_move_constructible
nlohmann::basic_json::to_bson
New addition to the public API.
- New symbols (3 overloads).
static std::vector<uint8_t> to_bson(const basic_json& j)static void to_bson(const basic_json& j, detail::output_adapter<char> o)static void to_bson(const basic_json& j, detail::output_adapter<uint8_t> o)
nlohmann::json_pointer::to_string
Updates the noexcept specification.
- Changed:
std::string to_string() const - noexcept
3.3.0
nlohmann::adl_serializer::from_json
Updates the noexcept specification.
- Changed:
template<typename BasicJsonType, typename ValueType> static - void from_json(BasicJsonType&& j, ValueType& val) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) + auto from_json(BasicJsonType&& j, ValueType& val) noexcept( noexcept(::nlohmann::from_json(std::forward<BasicJsonType>(j), val))) -> decltype( ::nlohmann::from_json(std::forward<Ba
nlohmann::adl_serializer::to_json
Updates the noexcept specification.
- Changed:
- template<typename BasicJsonType, typename ValueType> static void to_json(BasicJsonType& j, ValueType&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val))) + template <typename BasicJsonType, typename ValueType> static auto to_json(BasicJsonType& j, ValueType&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward<ValueType>(val))
nlohmann::basic_json::get_ptr
Updates the noexcept specification.
- Changed:
template<typename PointerType, typename std::enable_if< std::is_pointer<PointerType>::value and std::is_const<typename std::remove_pointer<PointerType>::type>::value, int>::type = - const PointerType get_ptr() const noexcept + auto get_ptr() const noexcept -> decltype(std::declval<const basic_json_t&>().get_impl_ptr(std::declval<PointerType>()))
nlohmann::basic_json::get_to
New addition to the public API.
- New symbol.
template<typename ValueType, detail::enable_if_t < not detail::is_basic_json<ValueType>::value and detail::has_from_json<basic_json_t, ValueType>::value, int> = 0> ValueType & get_to(ValueType& v) const noexcept(noexcept [...]
nlohmann::basic_json::insert_iterator
New addition to the public API.
- New symbol.
template<typename... Args> iterator insert_iterator(const_iterator pos, Args&& ... args)
nlohmann::basic_json::operator ValueType
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
template < typename ValueType, typename std::enable_if < not std::is_pointer<ValueType>::value and not std::is_same<ValueType, detail::json_ref<basic_json>>::value and not std::is_ + and detail::is_detected<detail::get_template_function, const basic_json_t&, ValueType>::value , int >::type = 0 > operator ValueType() const { return get<ValueType>(); }
Cosmetic-only changes (no behavioral/contract difference; omitted above): nlohmann::basic_json::basic_json, nlohmann::basic_json::get.
3.2.0
nlohmann::basic_json::accept
Changes parameter detail::input_adapter i to detail::input_adapter&& i.
- Changed:
static bool - accept(detail::input_adapter + accept(detail::input_adapter&& i)
nlohmann::basic_json::from_cbor
Changes the parameter list.
- Changed:
static basic_json - from_cbor(detail::input_adapter i, const bool strict + from_cbor(detail::input_adapter&& i, const bool strict = true, const bool allow_exceptions = true)
nlohmann::basic_json::from_msgpack
Changes the parameter list.
- Changed:
static basic_json - from_msgpack(detail::input_adapter i, const bool strict + from_msgpack(detail::input_adapter&& i, const bool strict = true, const bool allow_exceptions = true)
nlohmann::basic_json::from_ubjson
Changes the parameter list.
- Changed:
static basic_json - from_ubjson(detail::input_adapter i, const bool strict + from_ubjson(detail::input_adapter&& i, const bool strict = true, const bool allow_exceptions = true)
nlohmann::basic_json::input_format_t
New addition to the public API.
- New symbol.
using input_format_t = detail::input_format_t
nlohmann::basic_json::json_sax_t
New addition to the public API.
- New symbol.
using json_sax_t = json_sax<basic_json>
nlohmann::basic_json::operator ValueType
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
template < typename ValueType, typename std::enable_if < not std::is_pointer<ValueType>::value and not std::is_same<ValueType, detail::json_ref<basic_json>>::value and not std::is_ - #endif #if defined(JSON_HAS_CPP_17) and not std::is_same<ValueType, typename std::string_view>::value #endif , int >::type = 0 > operator ValueType() const + #if defined(JSON_HAS_CPP_17) && defined(_MSC_VER) and _MSC_VER <= 1914 and not std::is_same<ValueType, typename std::string_view>::value #endif #endif , int >::type = 0 > operator
nlohmann::basic_json::parse
Changes parameter detail::input_adapter i to detail::input_adapter&& i.
- Changed:
static basic_json - parse(detail::input_adapter + parse(detail::input_adapter&& i, const parser_callback_t cb = nullptr, const bool allow_exceptions = true)
nlohmann::basic_json::sax_parse
New addition to the public API.
- New symbols (2 overloads).
template <typename SAX> static bool sax_parse(detail::input_adapter&& i, SAX* sax, input_format_t format = input_format_t::json, const bool strict = true)template<class IteratorType, class SAX, typename std::enable_if< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits<IteratorType>::iterator_category>::value, int>::type = 0> static bool sax_p [...]
nlohmann::json_sax::boolean
New addition to the public API.
- New symbol.
virtual bool boolean(bool val) = 0
nlohmann::json_sax::end_array
New addition to the public API.
- New symbol.
virtual bool end_array() = 0
nlohmann::json_sax::end_object
New addition to the public API.
- New symbol.
virtual bool end_object() = 0
nlohmann::json_sax::key
New addition to the public API.
- New symbol.
virtual bool key(string_t& val) = 0
nlohmann::json_sax::null
New addition to the public API.
- New symbol.
virtual bool null() = 0
nlohmann::json_sax::number_float
New addition to the public API.
- New symbol.
virtual bool number_float(number_float_t val, const string_t& s) = 0
nlohmann::json_sax::number_float_t
New addition to the public API.
- New symbol.
using number_float_t = typename BasicJsonType::number_float_t
nlohmann::json_sax::number_integer
New addition to the public API.
- New symbol.
virtual bool number_integer(number_integer_t val) = 0
nlohmann::json_sax::number_integer_t
New addition to the public API.
- New symbol.
using number_integer_t = typename BasicJsonType::number_integer_t
nlohmann::json_sax::number_unsigned
New addition to the public API.
- New symbol.
virtual bool number_unsigned(number_unsigned_t val) = 0
nlohmann::json_sax::number_unsigned_t
New addition to the public API.
- New symbol.
using number_unsigned_t = typename BasicJsonType::number_unsigned_t
nlohmann::json_sax::parse_error
New addition to the public API.
- New symbol.
virtual bool parse_error(std::size_t position, const std::string& last_token, const detail::exception& ex) = 0
nlohmann::json_sax::start_array
New addition to the public API.
- New symbol.
virtual bool start_array(std::size_t elements) = 0
nlohmann::json_sax::start_object
New addition to the public API.
- New symbol.
virtual bool start_object(std::size_t elements) = 0
nlohmann::json_sax::string
New addition to the public API.
- New symbol.
virtual bool string(string_t& val) = 0
nlohmann::json_sax::string_t
New addition to the public API.
- New symbol.
using string_t = typename BasicJsonType::string_t
nlohmann::json_sax::~json_sax
New addition to the public API.
- New symbol.
virtual ~json_sax() = default
3.1.2
nlohmann::basic_json::basic_json
Adds a new overload.
- Adds 1 new overload.
template <typename BasicJsonType, detail::enable_if_t< detail::is_basic_json<BasicJsonType>::value and not std::is_same<basic_json, BasicJsonType>::value, int> = 0> basic_json(const BasicJsonType& val)
nlohmann::basic_json::get
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
template<typename BasicJsonType, detail::enable_if_t< - std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t>::value, int> = 0> basic_json + not std::is_same<BasicJsonType, basic_json>::value and detail::is_basic_json<BasicJsonType>::value, int> = 0> BasicJsonType get() const
nlohmann::basic_json::operator ValueType
Adjusts the template constraints (SFINAE) controlling which types this overload participates in overload resolution for.
- Changed:
template < typename ValueType, typename std::enable_if < not std::is_pointer<ValueType>::value and not std::is_same<ValueType, detail::json_ref<basic_json>>::value and not std::is_ + and not detail::is_basic_json<ValueType>::value #ifndef _MSC_VER and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>>::value #endif #if defined(JSON_HAS_CPP_17) and not std::is_same<ValueType, ty