Measured on GCC 13 (x86-64) with JSON_DIAGNOSTICS or JSON_DIAGNOSTIC_POSITIONS, a recursive walk over a view took 2.7 to 2.9 times the instructions: GCC no longer inlined the walk into itself. The cause was not the walk's code but that the path and range code of errors.hpp was instantiated in every translation unit (the non-template throw helpers referenced it), which changed GCC's early inlining of unrelated view functions. diagnostics() and the throw helpers that take an error_site are now templates, so that code is instantiated only where an exception can be thrown; the walks have the instruction counts of develop again. Iterators no longer keep their container: with it, one walk was still 1.1 % slower. key() of an iterator over an array or a primitive value (invalid_iterator.207) is therefore thrown without a context, as documented. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
Documentation
Generate documentation
Note on documentation: The source files contain links to the online documentation at https://json.nlohmann.me.
This URL provides the most recent documentation and also applies to previous versions. Documentation for deprecated
functions is not removed; instead, it is marked as deprecated.
If you want to view the documentation for a specific tag or commit hash, you can generate it locally as follows (example
using tag v3.12.0):
git clone https://github.com/nlohmann/json.git
cd json
git checkout v3.12.0
make install_venv serve -C docs/mkdocs
Open http://127.0.0.1:8000/ in your browser. Replace any URL in the source code that points to
https://json.nlohmann.me with http://127.0.0.1:8000 to view the documentation for the selected tag or commit hash.