Skip to content
Tags give the ability to mark specific points in history as being important
  • v3.11.2
    67e6070f · Upstream release v3.11.2 ·
    Release date: 2022-08-12
    SHA-256: 665fa14b8af3837966949e8eb0052d583e2ac105d3438baba9951785512cf921 (json.hpp), e5c7a9f49a16814be27e4ed0ee900ecd0092bfb7dbfca65b5a421b774dccaaed (include.zip), 8c4b26bf4b422252e13f332bc5e388ec0ab5c3443d24399acb675e68278d341f (json.tar.xz)
    
    This release fixes some bugs found in the [3.11.1](https://github.com/nlohmann/json/releases/tag/v3.11.1) release. Furthermore, the []((https://json.nlohmann.me/features/namespace/)) of the namespace library has been re-structured.
    
    All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](https://paypal.me/nlohmann).
    
    - Fix the [`value`](https://json.nlohmann.me/api/basic_json/value/) function which was broken for strings, size types, and `nullptr` in release 3.11.0. #3652 #3655 #3663
    - Fix the `json_fwd.hpp` header to be self-contained and add it to the single-header release. #3656 #3679 #3687
    - Fix regression that broke using [`json_pointer`](https://json.nlohmann.me/api/json_pointer/) as key in associative containers. #3680 #3685
    - Add missing constraint to deprecated JSON Pointer overloads of [`contains`](https://json.nlohmann.me/api/basic_json/contains/) and [`at`](https://json.nlohmann.me/api/basic_json/at/). #3658 #3681
    - Fix comparison between [`json_pointer`](https://json.nlohmann.me/api/json_pointer/) and strings with `==` and `!=`. These comparisons worked in 3.10.5, but were broken in 3.11.0 and 3.11.1. #3654 #3664
    - Fix `to_json` conversion of `std::vector<bool>::reference` and `std::vector<bool>::const_reference` for STLs where these are the same as `basic_json::boolean_t&` and `basic_json::boolean_t`, respectively. #3677 #3678
    
    - Restructure inline namespace and allow version component to be disabled. See [documentation](https://json.nlohmann.me/features/namespace/). #3683 #3696 #3697 #3698
    - Avoid heap allocations in [BJData](https://json.nlohmann.me/features/binary_formats/bjdata/) parser. #3637
    
    - Publish documentation on every push to `develop` branch. #3660 #3673
    - Add missing examples for the [public API](https://json.nlohmann.me/api/basic_json/). #3672 #3686
    - Fix typo in [`json_pointer`](https://json.nlohmann.me/api/json_pointer/) documentation. #3692
    
    - Add a badge for the [Discord chat](https://discord.gg/6mrGXKvX7y) to the README file. The goal of that additional communication channel beyond [the existing ones](https://github.com/nlohmann/json#support) is to quickly coordinate between the contributors. #3651
    - Complete contributor list. #3662 #3670
    
    - Remove the `macos-10.15` image from the CI as it is removed by GitHub Actions. #3612 #3615 #3626
    - Remove hardcoded paths in Ubuntu workflow. #3626
    - Only trigger AppVeyor builds if relevant files have been changed. #3626
    - Fix CodeQL warning. #3626
    - Harmonize naming of GitHub Actions jobs. #3661
    - Add labeler action to automatically add PR labels based on the changed files. #3671 #3674 #3675
    - Lint API documentation in the CI. #3672
    - Add local [LGTM](http://lgtm.com) configuration and suppress warnings on third-party scripts. #3643
    
    - This release deprecates comparing JSON Pointers with strings via [`operator==`](https://json.nlohmann.me/api/json_pointer/operator_eq/) and [`operator!=`](https://json.nlohmann.me/api/json_pointer/operator_ne/). To compare a [`json_pointer`](https://json.nlohmann.me/api/json_pointer/) `p` with a string `s`, convert `s` to a `json_pointer` first and use [`json_pointer::operator==`](https://json.nlohmann.me/api/json_pointer/operator_eq/) or [`json_pointer::operator!=`](https://json.nlohmann.me/api/json_pointer/operator_ne/). #3684
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - The function `iterator_wrapper` is deprecated. Please use the member function [`items()`](https://json.nlohmann.me/api/basic_json/items/) instead.
    - Functions `friend std::istream& operator<<(basic_json&, std::istream&)` and `friend std::ostream& operator>>(const basic_json&, std::ostream&)` are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://json.nlohmann.me/api/operator_gtgt/) and [`friend operator<<(std::ostream&, const basic_json&)`](https://json.nlohmann.me/api/operator_ltlt/) instead.
    - Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass two iterators; for instance, call `basic_json::from_cbor(ptr, ptr+len)` instead of `basic_json::from_cbor({ptr, len})`.
    - The implicit conversion from JSON Pointers to string ([`json_pointer::operator string_t`](https://json.nlohmann.me/api/json_pointer/operator_string_t)) is deprecated. Use [`json_pointer::to_string`](https://json.nlohmann.me/api/json_pointer/to_string/) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.11.1
    1bbf6e23 · Upstream release v3.11.1 ·
    Release date: 2022-08-01
    SHA-256: 9279dc616aac67efce68967f118051b50236612b90572e059783d368bd78687e (json.hpp), 9c15ca7806f863872452bfbc85fee6d1c9868117e3ea5e00a204ae961a2e1ae7 (include.zip), e6dd39f8f2da9cab11de2212acdd40b1cc1aafbe09da8c92933b911d19da3302 (json.tar.xz)
    
    - #3652 Regression: call to member function 'value' is ambiguous
    - #3654 Regression: no match for 'operator!=' comparing json_pointer and const char */string_t
    - #3655 Regression: .value<size_t> is compilation error
    
    All issues are fixed in the `develop` branch and will be part of the [3.11.2](https://github.com/nlohmann/json/releases/tag/v3.11.2) release.
    
    [Version 3.11.0](https://github.com/nlohmann/json/releases/tag/v3.11.0) moved the user-defined string literals (UDL) into namespace `nlohmann::literals::json_literals` (see [documentation](https://json.nlohmann.me/api/macros/json_use_global_udls/)). Unfortunately, this namespace was not imported to the global namespace by default which broke code. This release fixes this bug.
    
    All changes are backward-compatible. See [release notes of version 3.11.0](https://github.com/nlohmann/json/releases/tag/v3.11.0) for more information on other features.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](https://paypal.me/nlohmann).
    
    - Set default value of [`JSON_USE_GLOBAL_UDLS`](https://json.nlohmann.me/api/macros/json_use_global_udls/) and the CMake options `JSON_GlobalUDLs` to `1` to import the user-defined string literals from the `nlohmann::literals::json_literals` namespace into the global namespace by default. #3644 #3645 #3646
  • v3.11.0
    4a0e5870 · Upstream release v3.11.0 ·
    * * *
    
    **:bug: Unfortunately, this release introduced a bug that breaks existing usages of the user-defined string literals (UDL). This is fixed in [version 3.11.1](https://github.com/nlohmann/json/releases/tag/v3.11.1).**
    
    * * *
    
    Release date: 2022-08-01
    SHA-256: eb73896e9ce706ae6a62ce697dc8aca214840f70d8281779a6ea0cabe3afab3f (json.hpp), b4789050cacd110faf8b100cee82af19ad0b4d3249625f6582a60eeeb80c84a7 (include.zip), 5c8f7a4d9e9c0d565e71b6e5b0b3a12f784ffbf142e1ddc7ba86002cefb4c6ee (json.tar.xz)
    
    Version 3.11.0 is one of the biggest releases (in terms of closed issues and merged pull requests) ever. It brings:
    
    - **String view** support for all functions working on object keys (e.g., [`at`](https://json.nlohmann.me/api/basic_json/at/) or [`operator[]`](https://json.nlohmann.me/api/basic_json/operator%5B%5D/)), avoiding unnecessary allocations.
    - **BJData** as the fifth supported binary format besides BSON, CBOR, MessagePack, and UBJSON.
    - **Better C++20 support** to make the library integrate more smoothly with newer codebases.
    - Better support for avoiding problems when **multiple versions** of the library are used in the same project.
    - Even better and more extensive **documentation** and **examples**.
    - **More tests** for edge cases like 32-bit support, C++20 features, using the library with ICPC, or after including `<windows.h>`.
    
    All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](https://paypal.me/nlohmann).
    
    - Allow to **use `std::string_view` as object keys** in [`at`](https://json.nlohmann.me/api/basic_json/at/), [`operator[]`](https://json.nlohmann.me/api/basic_json/operator%5B%5D/), [`value`](https://json.nlohmann.me/api/basic_json/value/), [`erase`](https://json.nlohmann.me/api/basic_json/erase/), [`find`](https://json.nlohmann.me/api/basic_json/find/), [`contains`](https://json.nlohmann.me/api/basic_json/contains/), and [`count`](https://json.nlohmann.me/api/basic_json/count/) to avoid unnecessary allocations. #3423, #1529, #3558, #3564
    - Add support to read and write the UBJSON-derived **[Binary JData (BJData)](https://github.com/NeuroJSON/bjdata/blob/Draft_2/Binary_JData_Specification.md) format** (see [documentation](https://json.nlohmann.me/features/binary_formats/bjdata/)). #3336, #3461, #3463, #3475, #3479, #3493, #3491, #3492, #3490, #3500, #3502, #3503, #3505, #3513, #3514, #3519, #3523, #3541, #3543
    
    - Allow creation of [`ordered_json`](https://json.nlohmann.me/api/ordered_json/) objects from initializer lists. #3342, #3343, #3370
    - Fix failing tests when compiling with C++20 and add support for [`operator<=>`](https://json.nlohmann.me/api/basic_json/operator_spaceship/). #3207, #3446, #3472
    - Fix comparison-related compilation problems in C++20 on GCC 12. #3138, #3379
    - Make iterator satisfy `std::incrementable`. #3331, #3332
    - Exclude `std::any` from implicit conversion. #3428, #3437
    - Fix constraints on `from_json()` for strings. #3171, #3267, #3312, #3384, #3427, #3312, #3620
    - Make iterators usable with `<ranges>` and range-v3. #3130, #3446
    - Fix comparison of NaN values with `json` to behave like `float`. #3409, #3446
    - Add [`operator<<(json_pointer)`](https://json.nlohmann.me/api/operator_ltlt/) to fix a regression after the 3.10.0 release. #3600, #3601
    - Fix JSON Patch to not create missing parent objects. #3134, #3199, #3628
    - Re-add `value_type` detection to distinguish string types (was broken in releases 3.10.4, and 3.10.5). #3204, #3333, #3604, #3602, #3629
    - Fix latest build error in MSVC platform (was broken during development of 3.11.0). #3630
    
    - Allow default values for [`NLOHMANN_DEFINE_TYPE_INTRUSIVE`](https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/) and [`NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE`](https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/). #2819, #3143
    - Avoid clash with Arduino defines. #3338
    - Improve [`meta`](https://json.nlohmann.me/api/basic_json/meta/) output for MSVC. #3417
    - Check and warn if a different version of the library is already included (see [`JSON_SKIP_LIBRARY_VERSION_CHECK`](https://json.nlohmann.me/api/macros/json_skip_library_version_check/)). #3418
    - Re-template [`json_pointer`](https://json.nlohmann.me/api/json_pointer/) on string type. #3415
    - Allow to create booleans from `std::vector<bool>::reference`. #3533, #3534
    - Allow to use array types where iterators are pointers. #3544
    - Improve performance of writing binary formats to byte vectors. #3569
    - Add [`patch_inplace`](https://json.nlohmann.me/api/basic_json/patch_inplace/) function to apply patches without copying. #3581, #3596
    - Use [`swap`](https://json.nlohmann.me/api/basic_json/swap/) by ADL to allow swapping with non-`std` containers and improve error messages. #3609
    - Add versioned, ABI-tagged inline namespace (see [`NLOHMANN_JSON_NAMESPACE`](https://json.nlohmann.me/api/macros/nlohmann_json_namespace/)) to avoid ODR errors when linking different versions of the library. #1539, #3360, #3588, #3590
    - Move UDLs out of the global namespace (see [`JSON_USE_GLOBAL_UDLS`](https://json.nlohmann.me/api/macros/json_use_global_udls/)) to avoid name clashes. #1682, #3605
    
    - Fix ICPC warning 1098. #3632, #3634
    - Fix a `-Wpragmas` warning in GCC <11. #3550
    
    - Fix `_MSC_VER` version to check for `std::filesystem`. #3240
    - Remove `<sstream>` dependency. #3239, #3244
    - Overwork bug template to systematically request information. #3348
    - Add script to [test local version](https://github.com/nlohmann/json/tree/develop/tools/serve_header) in Compiler Explorer. #3456
    - Change the default value of the CMake parameter `JSON_MultipleHeader` to `ON` to always use the multi-header version unless specified otherwise. #3532
    - Add option to disable default enum conversions (see [`JSON_DISABLE_ENUM_SERIALIZATION`](https://json.nlohmann.me/api/macros/json_disable_enum_serialization/)). #3536
    - Add maintainer targets to create source archive `json.tar.xz` which can be used in [`FetchContent`](https://json.nlohmann.me/integration/cmake/#fetchcontent). #3289, #3255
    - Fix `CITATION.cff`. #3320
    - Use [The Pitchfork Layout (PFL)](https://api.csswg.org/bikeshed/?force=1&url=https://raw.githubusercontent.com/vector-of-bool/pitchfork/develop/data/spec.bs). #3462
    - Update Cpplint. #3454
    - More intermediate folders from Visual Studio Code are added to `.gitignore`. #3572
    - Add badge for https://repology.org/project/nlohmann-json/versions. #3586
    - Use [REUSE licensing framework](http://reuse.software). #3546 , #3633, #3635
    - Install `.pc` and `.cmake` files to `share` directory. #3619
    
    - Add support for Visual Studio 2022., #3295
    - Adjust GitHub Actions CI wrt. `windows-latest` image. #3368
    - Remove deprecated `windows-2016` image. #3416
    - Speed up AppVeyor CI. #3422
    - Update CI image to check with ICPC, GCC 11 and Clang 14. #3420
    - Add build step for ICPC to CI. #3465
    - Add more Xcode versions (13.3.1, 13.3, 13.2.1, 13.2, and 13.1) to the CI. #3485
    - Fix "JSON_MultipleHeaders" option spelling in CI. #3555
    - Increase timeout for Unicode tests. #3579, #3580, #3614
    - Abort CI runs on newer commits on the same branch. #3610
    - Fix MinGW CI failures. #3618
    - Disable exceptions on ICPC (for the `disabled_exceptions` unit test). #3621
    
    - Improve unit tests. #3380, #3393, #3365, #3405, #3377, #3421, #3422
    - Disable regression test on GCC <8.4. #3451
    - Add tests for 32 bit. #3524, #3529, #3530, #3532
    - Add error message if test suite cannot be found. #3584, #3585
    - Add unit test to make sure `iterator_input_adapter` advances iterators correctly. #3548
    - Add a unit test including `<windows.h>`. #3631
    
    - Add more examples to documentation. #3464
    - Improve documentation on supported types of [`parse`](https://json.nlohmann.me/api/basic_json/parse/) and [`accept`](https://json.nlohmann.me/api/basic_json/accept/). #3245, #3246
    - Add documentation on [how to parse JSON Lines](https://json.nlohmann.me/features/parsing/json_lines/) input. #3247
    - Fix typos. #3249, #3265, #3426, #3439, #3481, #3499
    - Document [parsing to `ordered_json`](https://json.nlohmann.me/features/object_order/#notes-on-parsing). #3325, #3326
    - Use `FetchContent_MakeAvailable` in examples. #3345, #3351
    - Document [requirement](https://json.nlohmann.me/api/macros/json_diagnostics/#notes) of using the same definition of `JSON_DIAGNOSTICS` in all linked objects. #3360, #3378
    - Document [fuzz testing](https://github.com/nlohmann/json/blob/develop/tests/fuzzing.md). #3477, #3478
    - Add documentation of [macros](https://json.nlohmann.me/api/macros/) and [runtime assertions](https://json.nlohmann.me/features/assertions/). #3444, #3431
    - Fix documentation of [JSON Pointer](https://json.nlohmann.me/features/json_pointer/). #3511, #3520
    - Make certain usage patterns more prominent in the README. #3557
    - Document [precondition](https://json.nlohmann.me/api/basic_json/parse/#notes) for parsing from `FILE *` and add assertion. #3593
    - Improve documentation. #3592
    - Add documentation for [comparing `json` and `ordered_json`](https://json.nlohmann.me/api/basic_json/operator_eq/#notes). #3443, #3599
    - Adjust JSON Pointer examples and add CI step for the examples. #3622
    - Overwork documentation and add more examples. #3553
    
    The implicit conversion from JSON Pointers to string ([`json_pointer::operator string_t`](https://json.nlohmann.me/api/json_pointer/operator_string_t)) has been deprecated. Use [`json_pointer::to_string`](https://json.nlohmann.me/api/json_pointer/to_string/) instead.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - The function `iterator_wrapper` is deprecated. Please use the member function [`items()`](https://json.nlohmann.me/api/basic_json/items/) instead.
    - Functions `friend std::istream& operator<<(basic_json&, std::istream&)` and `friend std::ostream& operator>>(const basic_json&, std::ostream&)` are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://json.nlohmann.me/api/operator_gtgt/) and [`friend operator<<(std::ostream&, const basic_json&)`](https://json.nlohmann.me/api/operator_ltlt/) instead.
    - Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass two iterators; for instance, call `basic_json::from_cbor(ptr, ptr+len)` instead of `basic_json::from_cbor({ptr, len})`.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
    
  • v3.10.5
    13132dd3 · Upstream release v3.10.5 ·
    Release date: 2022-01-03
    SHA-256: e832d339d9e0c042e7dff807754769d778cf5d6ae9730ce21eed56de99cb5e86 (json.hpp), b94997df68856753b72f0d7a3703b7d484d4745c567f3584ef97c96c25a5798e (include.zip)
    
    The previous version 3.10.4 introduced support to convert **`std::filesystem`** objects to JSON and vice versa. Unfortunately, we made the assumption that any compiler supporting C++17 would also have proper filesystem support. This was a mistake. This release introduces preprocessor checks  (and means to override them) to make sure that the conversion support is only compiled if the compiler is detected to support it.
    
    All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - Make sure C++17 filesystem conversions are only used if the compiler supports it. Furthermore, add defines  [`JSON_HAS_FILESYSTEM` and `JSON_HAS_EXPERIMENTAL_FILESYSTEM`](https://json.nlohmann.me/features/macros/#json_has_cpp_11-json_has_cpp_14-json_has_cpp_17-json_has_cpp_20) which can be set to `0` to avoid using filesystem support altogether.`std::filesystem`. #3090 #3097 #3101 #3156 #3203
    - Fix a compilation error with Nvidia CUDA Compiler (NVCC).  #3013 #3234
    
    - Fix a warning for shadowed variables. #3188 #3193
    - Fix a warning on a pointless comparison. #3227 #2712 #2676 #1390 #755
    
    - Add a parameter to the [`update`](https://json.nlohmann.me/api/basic_json/update/) function to recursively merge objects with common keys. #3006 #3069
    - Extend [`std::hash`](https://json.nlohmann.me/api/basic_json/std_hash/#version-history) and [`std::swap`](https://json.nlohmann.me/api/basic_json/std_swap/) to work on any `nlohmann::basic_json` specializations rather than just `nlohmann::json`. #3121
    
    - Update CI to use Clang 14, GCC 6, and Clang-Tidy 14. #3088
    - Update cpplint. #3225
    - Add build step for the Nvidia CUDA Compiler (NVCC). #3227
    - Remove Travis CI. #3087 #3233
    - Compile and execute the test suite with C++17. #3101
    
    - The [mkdocs](https://www.mkdocs.org)-based documentation in [doc/mkdocs](https://github.com/nlohmann/json/tree/develop/doc/mkdocs) has been totally overworked. It now has a unified structure, more examples, and contains all information from the previous Doxygen-based documentation. The single source of truth is now the documentation on <https://json.nlohmann.me> and in particular the [**API Documentation**](https://json.nlohmann.me/api/basic_json/). #3071
    - Removed Wandbox online examples. #3071
    - Fix typos, links, and parameter names in the documentation. #3102 #3125 #3140 #3145 #3148
    - Add more examples. #3071 #3100
    
    Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass two iterators; for instance, call `basic_json::from_cbor(ptr, ptr+len)` instead of `basic_json::from_cbor({ptr, len})`.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.10.4
    97795502 · Upstream release v3.10.4 ·
    Release date: 2021-10-16
    SHA-256: c9ac7589260f36ea7016d4d51a6c95809803298c7caec9f55830a0214c5f9140 (json.hpp), 62c585468054e2d8e7c2759c0d990fd339d13be988577699366fe195162d16cb (include.zip)
    
    This release fixes two bugs introduced in release 3.10.0 and fixes the conversion of `std::filesystem::path`. All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - Fix regression bug introduced in release 3.10.0 which broke compilation for types with an explicit default constructor with default arguments. #3077 #3079
    - Fix regression bug introduced in release 3.10.0 which treated the return values of `std::find` and `std::remove` as pointers which could break compilation. #3081 #3082
    - Fix converting `std::filesystem::path` to JSON. Before release 3.10.3, such a conversion would trigger a stack overflow. Release 3.10.3 then further broke compilation on Windows. #3070 #3073
    
    Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass two iterators; for instance, call `basic_json::from_cbor(ptr, ptr+len)` instead of `basic_json::from_cbor({ptr, len})`.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.10.3
    7a5b7381 · Upstream release v3.10.3 ·
    Release date: 2021-10-08
    SHA-256: bac28658a4c9410faa55960a70c1ac541e8a51bbaae57dc395e23ca5abd3159a (json.hpp), 4ae5744bc1edd216c79f619fd49915c0e490e41b05434c2d2b89e078299f04ed (include.zip)
    
    This release fixes two more bug introduced in release 3.10.0: the **extended diagnostics triggered assertions** when used with `update()` or when inserting elements into arrays. All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - Fix bug in the [`update()`](https://json.nlohmann.me/api/basic_json/update/) function when used with extended diagnostics. #3007 #3008
    - Fix bug when inserting into arrays when using extended diagnostics. #2926 #3032 #3037
    
    - Custom allocators are now supported when writing binary formats (e.g., CBOR, MessagePack) into a `std::vector`. #2982 #2989
    
    - Allow conversion from types that do not define an explicit iterator type, but have a `begin()` and `end()` function. #3020
    
    - Updated the [Docker image](https://github.com/nlohmann/json-ci) used in the CI. #2981 #2986
    - Corrected the compiler version mentioned in the README file. #3040
    
    - Add script to generate docset for Dash, Velocity, and Zeal. #2967
    
    Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass two iterators; for instance, call `basic_json::from_cbor(ptr, ptr+len)` instead of `basic_json::from_cbor({ptr, len})`.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.10.2
    5cb87307 · Upstream release v3.10.2 ·
    Release date: 2021-08-26
    SHA-256: 059743e48b37e41579ee3a92e82e984bfa0d2a9a2b20b175d04db8089f46f047 (json.hpp), 61e605be15e88deeac4582aaf01c09d616f8302edde7adcaba9261ddc3b4ceca (include.zip)
    
    This release is made days after the 3.10.1 release due to a bug in the release script: The [3.10.1 release](https://github.com/nlohmann/json/releases/tag/v3.10.1) at GitHub contained the correct files, but the associated tag [v3.10.1](https://github.com/nlohmann/json/tree/v3.10.1) points to the wrong commit. This release is made with a fixed build script. All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - Fix the release scripts to correctly tag releases. #2973
    - Fix some `-Wunused` warnings on `JSON_DIAGNOSTICS` when the library is built without CMake. #2975 #2976
    
    Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass two iterators; for instance, call `basic_json::from_cbor(ptr, ptr+len)` instead of `basic_json::from_cbor({ptr, len})`.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.10.1
    3f50bbef · Upstream release v3.10.1 ·
    Release date: 2021-08-24
    SHA-256: 0b628af78a2f0f3e2ff41d8dfa18314dd53831ffc2720c2944192d9f53727f4d (json.hpp), 144268f7f85afb0f0fbea7c796723c849724c975f9108ffdadde9ecedaa5f0b1 (include.zip)
    
    This release fixes a bug introduced in release 3.10.0: the **extended diagnostics triggered an assertion** when used with `ordered_json`. All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - Fix an assertion triggered in the extended diagnostics using `ordered_json`. #2962 #2963
    - Make GDB pretty-printer robust against unset variable names. #2950
    
    - Add a missing header to `hash.hpp`. #2948
    - Fix some `-Wextra-semi-stmt` warnings. #2957
    
    - Avoid duplicate builds in AppVeyor. #2952
    - Remove an outdated test binary that is not supported any longer. #2941 #2945
    - Skip tests that would fail if CMake option `JSON_Install` is set to `OFF`. #2946 #2947
    - Move Travis jobs to travis-ci.com. #2938 #2959
    - Set stack size for some unit tests when building with MSVC. #2955 #2961
    - Add a regression test. #2960
    
    - Update the Homebrew command as [nlohmann-json](https://formulae.brew.sh/formula/nlohmann-json) is now in homebrew-core. #2943 #2966
    - Add example for integration via vcpkg. #2944 #2954
    - Fix a typo in the documentation. #2968
    
    Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass two iterators; for instance, call `basic_json::from_cbor(ptr, ptr+len)` instead of `basic_json::from_cbor({ptr, len})`.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.10.0
    f6de449d · Upstream release v3.10.0 ·
    Release date: 2021-08-17
    SHA-256: 230f3a03cefd586661ebab577a347c973d97a770afb89e22c52abc3c2a19d0a7 (json.hpp), b5e3bfad07feba218a26a4f809fbb0d1e33450524bf5d7244cabc92cf8178c69 (include.zip)
    
    JSON for Modern C++ 3.10.0 is the first release for over a year. It contains some new features and a lot of minor changes and bug fixes.
    
    Most notably, it introduces [**extended diagnostics.**](https://json.nlohmann.me/home/exceptions/#extended-diagnostic-messages) By defining [`JSON_DIAGNOSTICS`](https://json.nlohmann.me/features/macros/#json_diagnostics) before including the `json.hpp`, a [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901) is added to [exceptions](https://json.nlohmann.me/home/exceptions/) which helps to debug issues with object access, array indices, or mismatching types.
    
    Another important change behind the curtains is a **fully overworked CI** which performs a lot of checks for every commit which should allow more frequent releases in the future.
    
    All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - Add **extended diagnostics information** by adding a [JSON Pointer](https://datatracker.ietf.org/doc/html/rfc6901) to the [exception](https://json.nlohmann.me/home/exceptions/) messages indicating the exact location of a invalid type errors or out-of-bound errors.
    
    	```
    	[json.exception.type_error.302] (/address/housenumber) type must be number, but is string
    	```
    
    	Exceptions in the library are thrown in the local context of the JSON value they are detected. This makes detailed diagnostics messages, and hence debugging, difficult. To create better diagnostics messages, each JSON value needs a pointer to its parent value such that a global context (i.e., a path from the root value to the value that lead to the exception) can be created. That global context is then provided as a JSON Pointer.
    
    	As this global context comes at the price of storing one additional pointer per JSON value and runtime overhead to maintain the parent relation, extended diagnostics are disabled by default. They can, however, be enabled by defining the preprocessor symbol [`JSON_DIAGNOSTICS`](https://json.nlohmann.me/features/macros/#json_diagnostics) to 1 before including `json.hpp`. See the [`documentation`](https://json.nlohmann.me/home/exceptions/#extended-diagnostic-messages) for more information. #932 #1508 #2562 #2838 #2866
    - Add a [**GDB pretty printer**](https://github.com/nlohmann/json/tree/develop/third_party/gdb_pretty_printer) to facilitate reading `basic_json` values in GDB. #1952 #2607
    - Add a new value `store` to the [cbor_tag_handler_t](https://json.nlohmann.me/api/basic_json/cbor_tag_handler_t/) which allows to store the tags of CBOR values as binary subtypes. #2863 #2908
    - Add support for containers with non-default-constructible types. #2574 #2576
    
    - Fix a regression bug that failed `ordered_json` to be used when exceptions were switched off. #2347 #2725 #2934
    - Added iterator range insertion for `ordered_json`. #2490 #2512
    - Change the type of binary subtypes to `std::uint64_t` to support subtypes >255. Furthermore, the return value of the `subtype()` function has been fixed to the documented value `-1` in case no subtype is given. #2863 #2908
    - Fix move constructor of internal `json_ref` type which created `null` values when compiled with `-fno-elide-constructors`. #2387 #2405
    - Fix the compilation of `input_adapter` for containers in edge cases. #2553
    - Allow parsing from `std::byte` containers. #2413 #2546 #2550 #2602 #2869
    - Fix memory leak in `to_json` in case a JSON value is reused. #2865 #2872
    - Fix compilation error in case symbol `EOF` was not found. #2755 #2756
    - Fix Compilation error when using `NLOHMANN_JSON_SERIALIZE_ENUM` with `ordered_json` on libc++. #2491 #2825
    
    A lot of warnings have been fixed in this release. To make sure the library remains warning-free, the CI now breaks in case a warning is found in GCC (261 warning flags), Clang (flag `-Weverything` with 8 exceptions), or MSVC (flag `/W4`).
    
    - Fix `-Wimplicit-fallthrough` warnings. #2348 #2349
    - Fix `-Wfloat-equal` warnings. #2909 #2911
    - Add assertions to suppress C28020 warnings. #2447
    - Fix shadow warnings. #1759 #2536 #2444
    - Fix compiler warnings in the test suite. #2537
    - Fix issues found by Visual Studio Visual Assist #2615
    - Fix unused parameter warning. #2646 #2658 #2668 #2706 #2707
    - Remove HEDLEY annotation from `exception::what()` to fix C28204 warning. #2673 #2680
    - Suppress C4127 warning. #2592 #2875
    - Fix truncation warning. #2572 #2874
    - Fix useless cast warning. #1777 #2114 #2893 #2902
    - Fix unknown pragma warning. #2924 #2925
    - Fix `-Wswitch-enum` warnings. #2927
    - Fix C4309 and C4100 warnings and treat all MSVC `/W4` warnings as error. #2930
    - Suppress fewer warning flags. #2936
    
    The CI chain has been completely overworked and now runs mostly on a dedicated [Docker Image](https://github.com/nlohmann/json-ci) that contains all relevant tools.
    
    - Collected all CI calls in a [CMake file](https://github.com/nlohmann/json/blob/develop/cmake/ci.cmake) which can be enabled by setting `JSON_CI`.
    - Linux now builds with Clang 3.5 to 12 and GCC 4.8 to 11 checking multiple C++ standards. #2540
    - Windows builds with MSVC 2015 to 2019, MinGW (GCC 8), Clang 11 and 12, and Clang-CL 11 checking multiple C++ standards.
    - Mac builds with Xcode 10.2.1 to Xcode 12.4 checking multiple C++ standards. #1798 #2561 #2737 #2790 #2817
    - Use static analysis tools Clang-Tidy, Cppcheck, Valgrind, Google Sanitizers, Clang Static Analyzer, Cpplint, and Facebook Infer.
    - Add internal checks for CMake flags, switched off exceptions, header amalgamation, self-contained headers, and exclusion of certain tests via CTest.
    - Providers: Move most Travis/AppVeyor builds to GitHub Actions. Use [Drone CI](https://cloud.drone.io/nlohmann/json) for aarch64 build. Remove FOSSA. Properly select "Release" build for Travis CI builds. #2375 #2689
    - Remove `#define private public` hack from test files. Instead, macro `JSON_PRIVATE_UNLESS_TESTED` is used in the source code which defaults to `private`, but can be set to `public` to test internals. #43 #913 #1985 #2352
    
    - Fixed issue in CMake file that overwrote `CMAKE_CXX_COMPILER` when the test suite was compiled. #2344 #2384
    - Only enable CMake options `JSON_BuildTests` and `JSON_Install` by default when the library is the main project. #2513 #2514
    - Add CTest label `not_reproducible` to skip non-reproducible tests. #2324 #2560
    - Formatted CMake files ##2770
    - Add a CMake option `JSON_SystemInclude` to use `SYSTEM` in `target_include_directories`. #2762
    - Add CMake option `JSON_FastTests` (`OFF` by default) to which slow test suite.
    
    - Fixed typos in the documentation. #2354 #2754
    - Extended documentation for discarded values and `is_discarded()` function. #2360 #2363
    - Fix Markdown of README. #2582
    - Fix example in README file. #2625 #2659
    - Fix example in parse exceptions documentation. #2679
    - Overworked [documentation of number handling](https://json.nlohmann.me/features/types/number_handling/). #2747
    - Add link to Conan Center package to README. #2771
    - Added example for CPM.cmake. #2406
    - Update README to use HTTPS everywhere. #2789
    - Fixed consistency of `using` declarations in README. #2826
    - Fix documentation of tests that required a Git checkout. #2845
    - Fix code samples in GIF slideshow. #2457
    - Update documentation to reference [RFC 8259](https://tools.ietf.org/html/rfc8259.html) as JSON standard.
    - Add section on how to get support to README file.
    - Replaced links to Doxygen documentation with new [API documentation](https://json.nlohmann.me/api/basic_json/).
    - Documented the effect of a [bug](https://github.com/microsoft/STL/issues/2114) in Microsoft's STL that makes `what()` member function of exception objects unusable in case `_HAS_EXCEPTIONS=0` is set. #2824
    
    - Updated Hedley to version 15. #2367
    - Updated Doctest to version 2.4.6. #2525 #2538 #2686 #2687
    
    - Use C++14 constructs where available. #2533
    - Fix `pkg-config.pc` generation. #2690
    - Add possibility to set the C++ standard via macros `JSON_HAS_CPP_11`, `JSON_HAS_CPP_14`, `JSON_HAS_CPP_17`, and `JSON_HAS_CPP_20`. By defining any of these symbols, the internal check is overridden and the provided C++ version is unconditionally assumed. This can be helpful for compilers that only implement parts of the standard and would be detected incorrectly. #2730 #2731 #2749
    - Add preprocessor symbol `JSON_NO_IO`. When defined, headers `<cstdio>`, `<ios>`, `<iosfwd>`, `<istream>`, and `<ostream>` are not included and parse functions relying on these headers are excluded. This is relevant for environment where these I/O functions are disallowed for security reasons (e.g., Intel Software Guard Extensions (SGX)). #2728 #2729 #2842 #2861
    - Benchmarks are handled via `FetchContent` and require CMake version 3.11. Removed Google Benchmark copy. Fix default branch name for Google Benchmarks. #2795 #2796
    - Simplify object parser for CBOR. #2879 #2598
    - Cleaned up maintainer Makefiles
    
    - Clarified license of `is_complete_type` implementation. #2534
    - License fix for `integer_sequence` and `index_sequence` implementation. #2683
    
    Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass two iterators; for instance, call `basic_json::from_cbor(ptr, ptr+len)` instead of `basic_json::from_cbor({ptr, len})`.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
    
  • v3.9.1
    391786c6 · Upstream release v3.9.1 ·
    Release date: 2020-08-06
    SHA-256: 7804b38146921d03374549c9e2a5e3acda097814c43caf2b96a0278e58df26e0 (json.hpp), 6bea5877b1541d353bd77bdfbdb2696333ae5ed8f9e8cc22df657192218cad91 (include.zip)
    
    This release fixes two bugs in the features introduced in release 3.9.0. The lexer did not accept **consecutive comments**, and **`ordered_json`  lacked some functions** from `json`. All changes are backward-compatible.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - The lexer did not accept input with two or more consecutive comments (e.g. `/* one */ /* two */ []`). #2330 #2332
    - The newly introduced `ordered_json` container did not implement the complete interface of `basic_json` which broke existing code when `json` was replaced by `ordered_json`, in particular when trying to call `ordered_json::parse`. #2315 #2319 #2331
    
    - Install pkg-config file to `CMAKE_CURRENT_BINARY_DIR` instead of `CMAKE_BINARY_DIR` #2318
    - Make installation directory of pkg-config file depend on `CMAKE_INSTALL_LIBDIR`. #2314
    - Fix `-Wimplicit-fallthrough` warning. #2333
    - Fix name of Homebrew formula in documentation. #2326 #2327
    - Fix typo in documentation. #2320
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    - Passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists is deprecated. Instead, pass the elements individually without braces.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.9.0
    dcfd3ee9 · Upstream release v3.9.0 ·
    Release date: 2020-07-27
    SHA-256: d8089d52d285ef2c5368eb39ae665b39ea464206b1ca674a88a915c0245ff4f0 (json.hpp), 5b9b819aed31626aefe2eace23498cafafc1691890556cd36d2a8002f6905009 (include.zip)
    
    JSON for Modern C++ 3.9.0 is a feature release that adds four long-awaited features, some requested five years ago.
    
    - The parser functions have now an option to ignore `//` and `/* */` style **comments**. Though comments are not officially part of the JSON specification (see [here](https://github.com/nlohmann/json#comments-in-json) for a discussion), comment support was a frequently requested feature, and its implementation was much less effort than continuously explaining the lack of comment support.
    - The second-most requested feature was a way to **preserve the insertion order of object keys**. Though this was possible via template specialization for a while, we now added a new type `nlohmann::ordered_json` as drop-in replacement for `nlohmann::json` for this.
    - To circumvent unexpected behavior, **implicit conversions** can now be switched off with a CMake or preprocessor option.
    - Last, but not least, a mapping between user-defined types and JSON can now be expressed using **convenience macros** by just listing the names of the member variables to read/write.
    
    All changes are backward-compatible. See below the complete list of changes. See the [README](https://github.com/nlohmann/json/blob/develop/README.md) or the [documentation](https://nlohmann.github.io/json/) for more information.
    
    :moneybag: Note you can **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - Add optional support for [**comments in JSON**](https://github.com/nlohmann/json#comments-in-json): passing parameter `ignore_comments` to the `parse` function will treat `//` and `/* */` comments like whitespace. #294 #363 #376 #597 #1513 #2061 #2212
    - Add type `nlohmann::ordered_json` to [**preserve insertion order of object keys**](https://github.com/nlohmann/json#order-of-object-keys). `ordered_json` is a specialization of `basic_json` and can be used wherever `json` is used. #106 #424 #543 #660 #727 #952 #1106 #1717 #1817 #2179 #2206 #2258
    - Add CMake option `JSON_ImplicitConversions` and preprocessor symbol `JSON_USE_IMPLICIT_CONVERSIONS` to [**switch off implicit conversions**](https://github.com/nlohmann/json#implicit-conversions). Implicit conversions, though very practical, are also a source of subtle bugs or unexpected behavior and may be switched off by default in future versions. The new options allow to remove implicit conversions now. #958 #1559
    - Add [**convenience macros** `NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE` and `NLOHMANN_DEFINE_TYPE_INTRUSIVE`](https://github.com/nlohmann/json#simplify-your-life-with-macros) to simplify serialization/deserialization code for user-defined types. #2175 #2225 #2233 #2267 #2280 #2287 #2306 #2313
    - Add **high-precision number support for UBJSON**. Now, any JSON value can serialized to UBJSON, and exception `json.exception.out_of_range.407` will no longer occur for integers larger than 9223372036854775807 (`LLONG_MAX`). #2297 #2286
    - Write **binary subtype as CBOR tag**. #2244
    - Add option to **ignore CBOR tags** as alternative to treat them as invalid input. #2308 #2273 #1968
    
    - Fix bug in CBOR parser where `allow_exceptions` was not respected. #2299 #2298
    - Fix bug in CBOR parser where incomplete binary values or strings could crash the parser. #2293 #2294
    
    - Make code compile with **Clang on Windows**. #2259 #1119
    - Use 32-bit float encoding in MessagePack wherever this is possible without loss of precision. #2201 #2196
    - Replace `std::hash<nlohmann::basic_json>` with a function that does not allocate memory. #2292 #2285 #2269
    
    - Use [GitLab Discussions](https://github.com/nlohmann/json/discussions) for support and feature requests. Removed and adjusted issue templates accordingly.
    - Allow CMake 3.13+ to override options when using `FetchContent`. #2222
    - Add support for [pkg-config](https://github.com/nlohmann/json#pkg-config). #2253
    - Add CMake option `JSON_TestDataDirectory` to select directory of previously downloaded test data for situations where Internet access is forbidden during testing. #2189 #2190
    - Add [option to skip tests](https://github.com/nlohmann/json#execute-unit-tests) that assume the code is checked out via Git. #2189
    - Add `JSON_ASSERT` macro to control behavior of assert calls. #2242
    - Add CI step for [GitHub CodeQL analysis](https://github.com/nlohmann/json/actions?query=workflow%3A%22Code+scanning+-+action%22) (GitHub actions).
    - Add CI step for Clang 9 and Clang 10 on Windows (GitHub actions). #2259
    - Add CI step for Clang 10 CL with MSVC 2019 on Windows (GitHub actions). #2268
    - Clean up GitHub actions CI. #2300
    - Add CI step for Xcode 12 (Travis). #2262
    - Add CI step for explicit conversions (Travis, AppVeyor).
    - Remove `swap` specialization to support C++20. #2176
    - Add missing check for `binary()` function in [SAX interface](https://github.com/nlohmann/json#sax-interface). #2282
    - Add [test](https://github.com/nlohmann/json/tree/develop/test/cmake_target_include_directories/project) for CMake `target_include_directories`. #2279
    - Add test to use library in multiple translation units. #2301
    - Add more sections to new [project website](https://nlohmann.github.io/json/). #2312
    - Fix warnings. #2304 #2305 #2303 #2274 #2224 #2211 #2203
    - Cleanup maintainer Makefiles. #2264 #2274
    - Improve documentation. #2232
    - Fix inconsistency in int-to-string function. #2193
    
    This release deprecates passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists. Instead, pass the elements individually without braces.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.8.0
    e02b50a4 · Upstream release v3.8.0 ·
    Release date: 2020-06-14
    SHA-256: be7bbfbc7c62c35aa6f27dfbdd950384f247dd9f2281b5930bdaa3a6ab95eef7 (json.hpp), 8590fbcc2346a3eefc341935765dd57598022ada1081b425678f0da9a939a3c0 (include.zip)
    
    It has been six months since the last release, and a lot of minor changes and bug fixes have accumulated. Nonetheless, JSON for Modern C++ 3.8.0 is a feature release.
    
    - With **binary values** we greatly extend the support for binary formats such as CBOR, BSON, or MessagePack. By adding a new value type to the JSON class, binary values can be read and written, and even shared between different formats. See [the documentation](https://github.com/nlohmann/json#binary-formats-bson-cbor-messagepack-and-ubjson) for examples.
    
    - Furthermore, we overworked the **input adapters**; that is, the way input is read by the parsers. Now any container is supported via the `LegacyInputIterator` concept. See [the documentation](https://github.com/nlohmann/json#custom-data-source) for examples. At the same time, we could improve the performance by 3-10%.
    
    All changes are backward-compatible. See below the complete list of changes.
    
    :moneybag: Note you can now **support this project** via [GitHub sponsors](https://github.com/sponsors/nlohmann) or [PayPal](http://paypal.me/nlohmann).
    
    - The library now supports binary values for CBOR (byte arrays), BSON, and MessagePack (bin, ext, fixext). The values are parsed into a byte vector for further processing. #483 #757 #1129 #1509 #1662 #1668 #2064 #2069 #2071 #2082 #2099
    - The input adapters have been generalized to read from any container including user-defined containers via `LegacyInputIterator`. The encoding of the input is implicitly derived from the size of the value type: UTF-8 (1 byte), UTF-16 (2 bytes), and UTF-32 (4 bytes) are supported. #1813 #2145 #2174 #2178
    - CBOR now encodes floating-point numbers that can be represented by a `float` as `float` to save space in the serialization (32 bit va. 64 bit). #1719 #2044
    
    - The functions to parse binary formats (`from_bson`, `from_cbor`, `from_msgpack`, and `from_ubjson`) now properly respect the `allow_exceptions=false` parameter. #1715 #2140
    - The `contains` function for JSON Pointers now returns `false` in all cases a syntactically correct JSON Pointer refers to a non-existing value. Previously, an exception was raised if a JSON Pointer referred to an array, but did not consist of a number. #1942 #1982 #2019
    - Fixed the JSON Pointer parser which accepted numbers with leading `+` as array index. #1990
    - Fixed JSON Patch generation to properly use `/-` in the `add` operation for arrays. #1983 #2054
    - Fixed compilation errors using GCC 10. #1912 #1920 #2034
    - Fixed compilation errors using MSVC 2019. #1695 #1810 #1958 #2006 #2008 #2009
    - Fixed a preprocessor check for some MSVC versions. #2112 #2137
    - Fixed possible memory leak in `push_back`. #1971 #2025
    - Removed broken overload of the `value()` function with `json::value_t type` parameter. #2086 #2104
    - Removed values from arrays in case they are discarded by a parser callback function. Such values remained in the array with type `discarded` before. #1972 #2153
    
    - The input adapters are now used via templates rather than inheriting from an abstract base class. This brings a 3-10% speedup for all parsers. #1457 #1950
    - Test files are now downloaded from an [external repository](https://github.com/nlohmann/json_test_data) such that the code repository got much smaller and can be used as submodule more easily. #96 #482 #556 #567 #620 #732 #1066 #1184 #1185 #1235 #1497 #1572 #1790 #2081
    - Made CMake's version config file architecture-independent. #1697 #1746
    
    - Added links to [GitHub sponsors](https://github.com/sponsors/nlohmann) and listed named sponsors.
    - Documented the integration of the library via CMake [FetchContent](https://cmake.org/cmake/help/v3.11/module/FetchContent.html) #2073 #2074
    - Doozer CI was removed as it seems to exist no longer. #2080
    - Added GitHub Actions workflows to build with Ubuntu, macOS, and Windows.
    - Added GCC 10.1 to the continuous integration. #2136
    - Fixed the Coveralls integration. #2100
    - Fixed the error message for invalid surrogate pairs. #2076
    - Fixed documentation. #1853 #1857 #1895 #1903 #1907 #1915 #1917 #1918 #1923 #1956 #1979 #1980 #2002 #2060 #2077 #2142 #2143 #2152
    - Added test cases for NaN value in CBOR. #2043
    - Documented curious behavior when using the library with glibc. #1924 #1933
    - Fixed compiler warnings. #1939 #1911 #1967 #1969 #2049 #2051 #2053 #2113 #2116 #2144 #2177
    - Updated Doctest to version 2.3.7. #2048 #2050
    - Updated Hedley to version 13.
    - Removed `std::is_pod` usage as it is deprecated in C++20. #1913 #2033 #2109
    - Added [wsjcpp](https://wsjcpp.org) package manager. #2004
    - Added [Build2](https://build2.org/) package manager. #1909
    - Fixed compiler warning in test case. #1871
    - Updated copyright year. #2010
    - Updated CMake tests. #1844
    - Removed a duplicated test. #2158
    - Removed outdated Travis macOS images for Xcode 8.3, Xcode 9.0, Xcode 9.1, and Xcode 9.2. Added Xcode 11.2 image.
    - Added [FOSSA](https://app.fossa.com/projects/git%2Bgithub.com%2Fnlohmann%2Fjson?ref=badge_shield) analysis.
    - Header `<ciso646>` is deprecated in C++17 and not included if library is compiled with C++17. #2089 .#2115
    - Updated the templates for bug fix reports, feature requests, and questions.
    - Added fuzz tests for the all UBJSON modes. #2182
    - Used [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to indicate deprecated functions to have supporting compilers report which function to use instead.
    
    This release deprecates passing iterator pairs or pointer/length pairs to parsing functions (`basic_json::parse`, `basic_json::accept`, `basic_json::sax_parse`, `basic_json::from_cbor`, `basic_json::from_msgpack`, `basic_json::from_ubjson`, `basic_json::from_bson`) via initializer lists. Instead, pass the elements individually without braces.
    
    The following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a0a8051760196ac813fd5eb3c8d5a2976.html#a0a8051760196ac813fd5eb3c8d5a2976) are deprecated. Please use the member function [`items()`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5961446010dfc494e0c247b4e9026977.html#a5961446010dfc494e0c247b4e9026977) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a60ca396028b8d9714c6e10efbf475af6.html#a60ca396028b8d9714c6e10efbf475af6) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a34d6a60dd99e9f33b8273a1c8db5669b.html#a34d6a60dd99e9f33b8273a1c8db5669b) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](https://nlohmann.github.io/json/doxygen/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
    
    All deprecations are annotated with [`HEDLEY_DEPRECATED_FOR`](https://nemequ.github.io/hedley/api-reference.html#HEDLEY_DEPRECATED_FOR) to report which function to use instead.
  • v3.7.2
    4b711658 · Upstream release v3.7.2 ·
    Release date: 2019-11-10
    SHA-256: 0a65fcbbe1b334d3f45c9498e5ee28c3f3b2428aea98557da4a3ff12f0f14ad6 (json.hpp), 67f69c9a93b7fa0612dc1b6273119d2c560317333581845f358aaa68bff8f087 (include.zip)
    
    Project [bad_json_parsers](https://github.com/lovasoa/bad_json_parsers) tested how JSON parser libraries react on **deeply nested inputs**. It turns out that this library segfaulted at a certain nesting depth. This bug was fixed with this release. **Now the parsing is only bounded by the available memory.** All changes are backward-compatible.
    
    * Fixed a bug that lead to stack overflow for deeply nested JSON values (objects, array) by changing the implementation of the destructor from a recursive to an iterative approach. #832, #1419, #1835
    
    * Added WhiteStone Bolt. #1830
    
    This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
  • v3.7.3
    82f70c08 · Upstream release v3.7.3 ·
    Release date: 2019-11-17
    SHA-256: 3b5d2b8f8282b80557091514d8ab97e27f9574336c804ee666fda673a9b59926 (json.hpp), 87b5884741427220d3a33df1363ae0e8b898099fbc59f1c451113f6732891014 (include.zip)
    
    This release fixes a bug introduced in release 3.7.2 which could yield quadratic complexity in destructor calls. All changes are backward-compatible.
    
    - Removed `reserve()` calls from the destructor which could lead to quadratic complexity. #1837 #1838
    
    This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
  • v3.7.0
    f10cdb7e · Upstream release v3.7.0 ·
    Release date: 2019-07-28
    SHA-256: a503214947952b69f0062f572cb74c17582a495767446347ce2e452963fc2ca4 (json.hpp), 541c34438fd54182e9cdc68dd20c898d766713ad6d901fb2c6e28ff1f1e7c10d (include.zip)
    
    This release introduces a few convenience functions and performs a lot of house keeping (bug fixes and small improvements). All changes are backward-compatible.
    
    - Add overload of the **[`contains`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab23b04802eb9da97dc3f664e54e09cb3.html#ab23b04802eb9da97dc3f664e54e09cb3) function** to check if a JSON pointer is valid without throwing exceptions, just like its [counterpart for object keys](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9286acdc0578fc66e9346323e69fc0e3.html#a9286acdc0578fc66e9346323e69fc0e3). #1600
    - Add a function **[`to_string`](http://nlohmann.github.io/json/namespacenlohmann_a6ce645a0b8717757e096a5b5773b7a16.html#a6ce645a0b8717757e096a5b5773b7a16)** to allow for generic conversion to strings. #916 #1585
    - Add **return value for the [`emplace_back`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_abf29131f898b05aad2c01a9c80e7a002.html#abf29131f898b05aad2c01a9c80e7a002) function**, returning a reference to the added element just like C++17 is [introducing this](https://en.cppreference.com/w/cpp/container/vector/emplace_back) for `std::vector`. #1609
    - Add info how to use the library with the **[pacman](https://wiki.archlinux.org/index.php/pacman) package manager** on MSYS2. #1670
    
    - Fix an issue where typedefs with certain names yielded a compilation error. #1642 #1643
    - Fix a conversion to `std::string_view` in the unit tests. #1634 #1639
    - Fix MSVC Debug build. #1536 #1570 #1608
    - Fix [`get_to`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a65753c68f06639eda0d355f919564e01.html#a65753c68f06639eda0d355f919564e01) method to clear existing content before writing. #1511 #1555
    - Fix a `-Wc++17-extensions` warning. `nodiscard` attributes are now only used with Clang when `-std=c++17` is used. #1535 #1551
    
    - Switch from [Catch](https://github.com/philsquared/Catch) to **[doctest](https://github.com/onqtam/doctest)** for the unit tests which speeds up compilation and runtime of the 112,112,308 tests.
    - Add an explicit section to the [README](https://github.com/nlohmann/json/blob/develop/README.md) about the **frequently addressed topics** [character encoding](https://github.com/nlohmann/json#character-encoding), [comments in JSON](https://github.com/nlohmann/json#comments-in-json), and the [order of object keys](https://github.com/nlohmann/json#order-of-object-keys).
    
    - Use [`GNUInstallDirs`](https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html) to set library install directories. #1673
    - Fix links in the [README](https://github.com/nlohmann/json/blob/develop/README.md). #1620 #1621 #1622 #1623 #1625
    - Mention [`json` type](http://nlohmann.github.io/json/namespacenlohmann_a2bfd99e845a2e5cd90aeaf1b1431f474.html#a2bfd99e845a2e5cd90aeaf1b1431f474) on the [documentation start page](http://nlohmann.github.io/json/index.html). #1616
    - Complete documentation of [`value()` function](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_adcf8ca5079f5db993820bf50036bf45d.html#adcf8ca5079f5db993820bf50036bf45d) with respect to `type_error.302` exception. #1601
    - Fix links in the documentation. #1598
    - Add regression tests for MSVC. #1543 #1570
    - Use **[CircleCI](http://circleci.com)** for [continuous integration](https://circleci.com/gh/nlohmann/json).
    - Use **[Doozer](https://doozer.io)** for [continuous integration](https://doozer.io/nlohmann/json) on Linux (CentOS, Raspbian, Fedora)
    - Add tests to check each CMake flag (`JSON_BuildTests`, `JSON_Install`, `JSON_MultipleHeaders`, `JSON_Sanitizer`, `JSON_Valgrind`, `JSON_NoExceptions`, `JSON_Coverage`).
    - Use [Hedley](https://nemequ.github.io/hedley/) to avoid re-inventing several compiler-agnostic feature macros like `JSON_DEPRECATED`, `JSON_NODISCARD`, `JSON_LIKELY`, `JSON_UNLIKELY`, `JSON_HAS_CPP_14`, or `JSON_HAS_CPP_17`. Functions taking or returning pointers are annotated accordingly when a pointer will not be null.
    - Build and run tests on [AppVeyor](https://ci.appveyor.com/project/nlohmann/json) in DEBUG and RELEASE mode.
    
    This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
  • v3.7.1
    7c36b8fa · Upstream release v3.7.1 ·
    Release date: 2019-11-06
    SHA-256: b5ba7228f3c22a882d379e93d08eab4349458ee16fbf45291347994eac7dc7ce (json.hpp), 77b9f54b34e7989e6f402afb516f7ff2830df551c3a36973085e2c7a6b1045fe (include.zip)
    
    This release fixes several small bugs in the library. All changes are backward-compatible.
    
    - Fixed a segmentation fault when serializing `std::int64_t` minimum value. #1708 #1722
    - Fixed the [`contains()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab23b04802eb9da97dc3f664e54e09cb3.html#ab23b04802eb9da97dc3f664e54e09cb3) function for JSON Pointers. #1727 #1741
    - Fixed too lax SFINAE guard for conversion from `std::pair` and `std::tuple` to `json`. #1805 #1806 #1825 #1826
    - Fixed some regressions detected by UBSAN. Updated CI to use Clang-Tidy 7.1.0. #1716 #1728
    - Fixed integer truncation in `iteration_proxy`. #1797
    - Updated [Hedley](https://github.com/nemequ/hedley) to v11 to [fix a E2512 error](https://github.com/nemequ/hedley/issues/28) in MSVC. #1799
    - Fixed a compile error in enum deserialization of non non-default-constructible types. #1647 #1821
    - Fixed the conversion from `json` to `std::valarray`.
    
    - The [`items()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) function can now be used with a custom string type. #1765
    - Made [`json_pointer::back`](https://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a213bc67c32a30c68ac6bf06f5195d482.html#a213bc67c32a30c68ac6bf06f5195d482) `const`. #1764 #1769
    - Meson is part of the release archive. #1672 #1694
    - Improved documentation on the Meson and Spack package manager. #1694 #1720
    
    - Added GitHub Workflow with `ubuntu-latest`/GCC 7.4.0 as CI step.
    - Added GCC 9 to Travis CI to compile with C++20 support. #1724
    - Added MSVC 2019 to the AppVeyor CI. #1780
    - Added badge to [fuzzing status](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:json).
    - Fixed some cppcheck warnings. #1760
    - Fixed several typos in the documentation. #1720 #1767 #1803
    - Added documentation on the `JSON_THROW_USER`, `JSON_TRY_USER`, and `JSON_CATCH_USER` macros to control user-defined exception handling.
    - Used GitHub's [CODEOWNERS](https://github.com/nlohmann/json/blob/develop/.github/CODEOWNERS) and [SECURITY](https://github.com/nlohmann/json/blob/develop/.github/SECURITY.md) feature.
    - Removed `GLOB` from CMake files. #1779
    - Updated to [Doctest](https://github.com/onqtam/doctest) 2.3.5.
    
    This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
  • v3.6.0
    f02adff4 · Upstream release v3.6.0 ·
    Release date: 2019-03-20
    SHA-256: ce9839370f28094c71107c405affb3b08c4a098154988014cbb0800b1c44a831 (json.hpp), 237c5e66e7f8186a02804ce9dbd5f69ce89fe7424ef84adf6142e973bd9532f4 (include.zip)
    
    ℹ️ **This release introduced a regression. Please update to [version 3.6.1](https://github.com/nlohmann/json/releases/tag/v3.6.1)!**
    
    This release adds some **convenience functions for JSON Pointers**, introduces a [`contains`](
    http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a0a45fc740637123fdf05fef970f8be47.html#a0a45fc740637123fdf05fef970f8be47) function to check if a key is present in an object, and improves the **performance of integer serialization**. Furthermore, a lot of small bug fixes and improvements have been made. All changes are backward-compatible.
    
    - Overworked the public interface for JSON Pointers. The creation of JSON Pointers is simplified with [`operator/`](
    http://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a90a11fe6c7f37b1746a3ff9cb24b0d53.html#a90a11fe6c7f37b1746a3ff9cb24b0d53) and [`operator/=`](http://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a7395bd0af29ac23fd3f21543c935cdfa.html#a7395bd0af29ac23fd3f21543c935cdfa). JSON Pointers can be inspected with [`empty`](http://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a649252bda4a2e75a0915b11a25d8bcc3.html#a649252bda4a2e75a0915b11a25d8bcc3), [`back`](http://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a6bd5b554c10f15672135c216893eef31.html#a6bd5b554c10f15672135c216893eef31),  and [`parent_pointer`](http://nlohmann.github.io/json/classnlohmann_1_1json__pointer_afdaacce1edb7145e0434e014f0e8685a.html#afdaacce1edb7145e0434e014f0e8685a), and manipulated with [`push_back`](http://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a697d12b5bd6205f8866691b166b7c7dc.html#a697d12b5bd6205f8866691b166b7c7dc) and [`pop_back`](http://nlohmann.github.io/json/classnlohmann_1_1json__pointer_a4b1ee4d511ca195bed896a3da47e264c.html#a4b1ee4d511ca195bed896a3da47e264c). #1434
    - Added a boolean method [`contains`](
    http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a0a45fc740637123fdf05fef970f8be47.html#a0a45fc740637123fdf05fef970f8be47) to check whether an element exists in a JSON object with a given key. Returns false when called on non-object types. #1471 #1474
    
    - Fixed a compilation issues with libc 2.12. #1483 #1514
    - Fixed endian conversion on PPC64. #1489
    - Fixed library to compile with GCC 9. #1472 #1492
    - Fixed a compilation issue with GCC 7 on CentOS. #1496
    - Fixed an integer overflow. #1447
    - Fixed buffer flushing in serializer. #1445 #1446
    
    - The performance of dumping integers has been greatly improved. #1411
    - Added CMake parameter `JSON_Install` to control whether the library should be installed (default: on). #1330
    - Fixed a lot of compiler and linter warnings. #1400 #1435 #1502
    - Reduced required CMake version from 3.8 to 3.1. #1409 #1428 #1441 #1498
    - Added `nodiscard` attribute to `meta()`, `array()`, `object()`, `from_cbor`, `from_msgpack`, `from_ubjson`, `from_bson`, and `parse`. #1433
    
    - Added missing headers. #1500
    - Fixed typos and broken links in README. #1417 #1423 #1425 #1451 #1455 #1491
    - Fixed documentation of parse function. #1473
    - Suppressed warning that cannot be fixed inside the library. #1401 #1468
    - Imroved package manager suppert:
    	- Updated Buckaroo instructions. #1495
    	- Improved Meson support. #1463
    	- Added Conda package manager documentation. #1430
    	- Added NuGet package manager documentation. #1132
    - Continuous Integration
    	- Removed unstable or deprecated Travis builders (Xcode 6.4 - 8.2) and added Xcode 10.1 builder.
    	- Added Clang 7 to Travis CI.
    	- Fixed AppVeyor x64 builds. #1374 #1414
    - Updated thirdparty libraries:
    	- Catch 1.12.0 -> 1.12.2
    	- Google Benchmark 1.3.0 -> 1.4.1
    	- Doxygen 1.8.15 -> 1.8.16
    
    This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
  • v3.6.1
    5e94a4e7 · Upstream release v3.6.1 ·
    Release date: 2019-03-20
    SHA-256: d2eeb25d2e95bffeb08ebb7704cdffd2e8fca7113eba9a0b38d60a5c391ea09a (json.hpp), 69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf (include.zip)
    
    This release **fixes a regression and a bug** introduced by the earlier 3.6.0 release. All changes are backward-compatible.
    
    - Fixed regression of #590 which could lead to compilation errors with GCC 7 and GCC 8. #1530
    - Fixed a compilation error when `<Windows.h>` was included. #1531
    
    - Fixed a warning for missing field initializers. #1527
    
    This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
  • v3.3.0
    a6cb432b · Upstream release v3.3.0 ·
    Release date: 2018-10-05
    SHA-256: f1327bb60c58757a3dd2b0c9c45d49503d571337681d950ec621f8374bcc14d4 (json.hpp), 9588d63557333aaa485e92221ec38014a85a6134e7486fe3441e0541a5a89576 (include.zip)
    
    This release adds support for **GCC 4.8**. Furthermore, it adds a function [**`get_to`**](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a8a3db7d78f74232d3a6fb8f1abf69709.html#a8a3db7d78f74232d3a6fb8f1abf69709) to write a JSON value to a passed reference. Another topic of this release was the **CMake support** which has been overworked and documented.
    
    Besides, a lot of bugs have been fixed and slight improvements have been made. All changes are backward-compatible.
    
    - The library can now also built with **GCC 4.8**. Though this compiler does not fully support C++11, it can successfully compile and run the test suite. Note that bug [57824](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57824) in GCC 4.8 still forbids to use multiline raw strings in arguments to macros. #1257
    - Added new function [**`get_to`**](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a8a3db7d78f74232d3a6fb8f1abf69709.html#a8a3db7d78f74232d3a6fb8f1abf69709) to write a JSON value to a passed reference. The destination type is automatically derived which allows more succinct code compared to the `get` function. #1227 #1231
    
    - Fixed a bug in the CMake file that made `target_link_libraries` to not properly include `nlohmann_json`. #1243 #1245 #1260
    - Fixed a warning in MSVC 2017 complaining about a constexpr if. #1204 #1268 #1272
    - Fixed a bug that prevented compilation with ICPC. #755 #1222
    - Improved the SFINAE correctness to fix a bug in the conversion operator. #1237 #1238
    - Fixed a `-Wctor-dtor-privacy` warning. #1224
    - Fixed a warning on a lambda in unevaluated context. #1225 #1230
    - Fixed a bug introduced in version 3.2.0 where defining `JSON_CATCH_USER` led to duplicate macro definition of `JSON_INTERNAL_CATCH`. #1213 #1214
    - Fixed a bug that prevented compilation with Clang 3.4.2 in RHEL 7. #1179 #1249
    
    - Added [documentation on CMake integration](https://github.com/nlohmann/json#cmake) of the library. #1270
    - Changed the CMake file to use `find_package(nlohmann_json)` without installing the library. #1202
    - Improved error messages in case `operator[]` is used with the wrong combination (json.exception.type_error.305) of JSON container type and argument type. Example: "cannot use operator[] with a string argument". #1220 #1221
    - Added a license and version information to the Meson build file. #1252
    - Removed static assertions to indicated missing `to_json` or `from_json` functions as such assertions do not play well with SFINAE. These assertions also led to problems with GMock. #960 #1212 #1228
    - The test suite now does not wait forever if run in a wrong directory and input files are not found. #1262
    - The test suite does not show deprecation warnings for deprecated functions which frequently led to confusion. #1271
    
    - GCC 4.8 and Xcode 10 were added to the [continuous integration suite](https://travis-ci.org/nlohmann/json) at Travis.
    - Added [lgtm](https://lgtm.com/projects/g/nlohmann/json/context:cpp) checks to pull requests.
    - Added tests for CMake integration. #1260
    
    This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.
  • v3.4.0
    a87d095e · Upstream release v3.4.0 ·
    Release date: 2018-10-30
    SHA-256: 63da6d1f22b2a7bb9e4ff7d6b255cf691a161ff49532dcc45d398a53e295835f (json.hpp), bfec46fc0cee01c509cf064d2254517e7fa80d1e7647fea37cf81d97c5682bdc (include.zip)
    
    This release introduces three new features:
    
    - **BSON (Binary JSON)** is next to CBOR, MessagePack, and UBJSON the fourth binary (de)serialization format supported by the library.
    - **Adjustable error handlers for invalid Unicode** allows to specify the behavior when invalid byte sequences are serialized.
    - **Simplified enum/JSON mapping** with a macro in case the default mapping to integers is not desired.
    
    Furthermore, some effort has been invested in improving the **parse error messages**. Besides, a few bugs have been fixed. All changes are backward-compatible.
    
    - The library can read and write a subset of **[BSON](http://bsonspec.org/) (Binary JSON)**. All data types known from JSON are supported, whereas other types more tied to MongoDB such as timestamps, object ids, or binary data are currently not implemented. See [the README](https://github.com/nlohmann/json#binary-formats-bson-cbor-messagepack-and-ubjson) for examples. #1244 #1320
    - The behavior when the library encounters an invalid Unicode sequence during serialization can now be controlled by defining one of three **Unicode error handlers**: (1) throw an exception (default behavior), (2) replace invalid sequences by the Unicode replacement character (U+FFFD), or (3) ignore/filter invalid sequences. See the [documentation of the `dump` function](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a50ec80b02d0f3f51130d4abb5d1cfdc5.html#a50ec80b02d0f3f51130d4abb5d1cfdc5) for examples. #1198 #1314
    - To easily specify a user-defined **enum/JSON mapping**, a macro `NLOHMANN_JSON_SERIALIZE_ENUM` has been introduced. See the [README section](https://github.com/nlohmann/json#specializing-enum-conversion) for more information. #1208 #1323
    
    - fixed truncation #1286 #1315
    - fixed an issue with std::pair #1299 #1301
    - fixed an issue with std::variant #1292 #1294
    - fixed a bug in the JSON Pointer parser
    
    - The **diagnosis messages for parse errors** have been improved: error messages now indicated line/column positions where possible (in addition to a byte count) and also the context in which the error occurred (e.g., "while parsing a JSON string"). Example: error `parse error at 2: syntax error - invalid string: control character must be escaped; last read: '<U+0009>'` is now reported as `parse error at line 1, column 2: syntax error while parsing value - invalid string: control character U+0009 (HT) must be escaped to \u0009 or \t; last read: '<U+0009>'`. #1280 #1288 #1303
    
    - improved Meson documentation #1305
    - fixed some more linter warnings #1280
    - fixed Clang detection for third-party Google Benchmark library #1277
    
    This release does not deprecate any functions. As an overview, the following functions have been deprecated in earlier versions and will be removed in the next major version (i.e., 4.0.0):
    
    - Function [`iterator_wrapper`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_af1592a06bc63811886ade4f9d965045e.html#af1592a06bc63811886ade4f9d965045e) are deprecated. Please use the member function [`items()`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_afe3e137ace692efa08590d8df40f58dd.html#afe3e137ace692efa08590d8df40f58dd) instead.
    - Functions [`friend std::istream& operator<<(basic_json&, std::istream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_ab7285a92514fcdbe6de505ebaba92ea3.html#ab7285a92514fcdbe6de505ebaba92ea3) and [`friend std::ostream& operator>>(const basic_json&, std::ostream&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a9e06deabe69262c3ffc5533d32856983.html#a9e06deabe69262c3ffc5533d32856983) are deprecated. Please use [`friend std::istream&  operator>>(std::istream&, basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_aaf363408931d76472ded14017e59c9e8.html#aaf363408931d76472ded14017e59c9e8) and [`friend operator<<(std::ostream&, const basic_json&)`](http://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5e34c5435e557d0bf666bd7311211405.html#a5e34c5435e557d0bf666bd7311211405) instead.