Fix documentation gaps found in a full GitHub Discussions review#5264
Merged
Conversation
Reviewed all 1008 GitHub Discussions (2020-2026) for recurring questions that better or more visible documentation would have avoided. Adds/expands documentation for ~26 distinct gaps, including: - New "Debugging" page collecting natvis, GDB pretty printer, LLDB status, and JSON_DIAGNOSTICS pointers (previously scattered/undiscoverable) - Thread-safety and schema-validation FAQ entries - StringType's char-based requirement (no wstring/u16string/u32string) - Brace-initialization-yields-arrays warning directly on the constructor reference page (previously only in the FAQ, missed by users reading the constructor docs) - std::any exclusion from get<T>(), with a manual-dispatch example - Non-string-keyed std::map serializing as an array of pairs - ordered_json compatibility with NLOHMANN_DEFINE_TYPE_* macros (already worked, was undocumented) - std::array truncation on size-mismatched conversion (no exception) - static_cast vs. get<std::optional<T>>() divergence - Recipe for omitting a std::optional field instead of emitting null - No built-in nesting-depth limit during parsing + a callback-based workaround recipe - Recipe for streaming a large homogeneous array via parser callbacks - operator>> stream-position semantics for concatenated JSON values - JSON Pointer array-vs-object creation rule for non-existing paths - CMake target name (nlohmann_json_modules) needed to link C++20 modules - ESP-IDF/PlatformIO: no official package, link to a community fork - get(key, default) as the Python dict.get() equivalent - reserve() recipe for pre-allocating array capacity - JSONC as an alias for the existing ignore_comments/ignore_trailing_commas combination (distinct from the unsupported JSON5) - items() dereferenced-element type: decltype() idiom + detail-namespace stability caveat - Various macro/type-conversion limitations (MSGPACK_DEFINE_ARRAY equivalent, char-array round-tripping, ADL serializer macro gap) Signed-off-by: Niels Lohmann <mail@nlohmann.me>
Signed-off-by: Niels Lohmann <mail@nlohmann.me>
0cecc58 to
990ed2d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reviewed all 1008 GitHub Discussions (2020–2026) to find recurring questions that better or more visible documentation would have avoided. This PR addresses ~26 distinct gaps identified in that review:
JSON_DIAGNOSTICS(previously scattered/undiscoverable)StringType's char-based requirement (nowstring/u16string/u32string)std::anyexclusion fromget<T>(), with a manual-dispatch examplestd::mapserializing as an array of pairsordered_jsoncompatibility withNLOHMANN_DEFINE_TYPE_*macros (already worked, was undocumented)std::arraytruncation on size-mismatched conversion (no exception)static_castvs.get<std::optional<T>>()divergencestd::optionalfield instead of emittingnulloperator>>stream-position semantics for concatenated JSON valuesnlohmann_json_modules) needed to link C++20 modulesget(key, default)as the Pythondict.get()equivalentreserve()recipe for pre-allocating array capacityignore_comments/ignore_trailing_commascombination (distinct from the unsupported JSON5)items()dereferenced-element type:decltype()idiom + detail-namespace stability caveatMSGPACK_DEFINE_ARRAYequivalent, char-array round-tripping, ADL serializer macro gap)Each change traces back to a specific discussion thread; see the commit message for the full list.
Test plan
mkdocs.ymlnav change reviewed for correct indentation (no local mkdocs build available to fully render the site)This PR was written by Claude Code as part of a broader GitHub Discussions review requested by @nlohmann.