Files
json/docs/mkdocs/docs/features
Niels Lohmann 2f383b80ee Document std::optional<T> direct-init/copy-init limitation with null
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>
2026-07-08 15:07:50 +02:00
..
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-05-18 20:37:07 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-06-29 22:15:18 +02:00
2022-05-01 09:41:50 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-07-04 11:13:25 +02:00
2026-06-29 22:15:18 +02:00