mirror of
https://github.com/nlohmann/json.git
synced 2026-07-09 03:55:09 +00:00
2f383b80ee
Add regression test pinning current behavior (CHECK_THROWS_AS) in the null section of unit-conversions.cpp with detailed comment explaining the C++ language-level cause (std::optional's own converting constructor wins overload resolution over basic_json::operator T()). Add a warning callout in conversions.md documenting that direct construction/ assignment of std::optional<T> from JSON null throws type_error 302, with a clear workaround (use get<std::optional<T>>() or get_to() instead, which correctly produce std::nullopt). This is a limitation at the language level: there is no SFINAE path to distinguish "called from inside std::optional's own constructor" from "direct call", so fixing it would require breaking changes to operator ValueType(). A permanent fix belongs in the 4.0 type-strictness redesign (#3453). Signed-off-by: Niels Lohmann <mail@nlohmann.me> Co-Authored-By: Claude Code <noreply@anthropic.com>
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.10.2):
git clone https://github.com/nlohmann/json.git
cd json
git checkout v3.10.2
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.