mirror of
https://github.com/nlohmann/json.git
synced 2026-10-07 17:35:18 +00:00
* Add basic_json::as_base_class and document name conflicts with custom base classes Members of basic_json hide members of a custom base class with the same name, and future releases may add members that hide ones accessible today. Document this in json_base_class_t and add as_base_class() to reach hidden members without spelling out the cast. Also make json_base_class_t a public member type. It was documented since 3.12.0, but declared private, so users could not name it. Supersedes #3899. Co-authored-by: Raphael Grimm <1005058+barcode@users.noreply.github.com> Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Add as_base_class to the docset search index New public members get an entry in docs/docset/docSet.sql (as done for to_bon8/from_bon8 in #2998). Without it, the Dash/Zeal docset built from the documentation cannot find basic_json::as_base_class. Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Silence clang-tidy for the hidden type_name() in the base class test ci_clang_tidy failed with readability-convert-member-functions-to-static on base_class_with_hidden_members::type_name(). It must stay a non-static member: the test shows that it is hidden by the non-static basic_json::type_name() and reachable through as_base_class(). Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Niels Lohmann <mail@nlohmann.me> Co-authored-by: Raphael Grimm <1005058+barcode@users.noreply.github.com>
1.2 KiB
1.2 KiB
nlohmann::basic_json::as_base_class
json_base_class_t& as_base_class() noexcept;
const json_base_class_t& as_base_class() const noexcept;
Returns a reference to this object as its custom base class json_base_class_t. No copy is
made.
Since basic_json derives from json_base_class_t, a member of basic_json hides any member of the custom base class
with the same name. This function makes such hidden members accessible again.
Return value
reference to this object as json_base_class_t
Exception safety
No-throw guarantee: this function never throws exceptions.
Complexity
Constant.
Notes
The function is equivalent to static_cast<json_base_class_t&>(j) (or static_cast<const json_base_class_t&>(j)).
Examples
??? example
The example shows how to use `as_base_class` to access members of the custom base class that are hidden by members
of `basic_json`.
```cpp
--8<-- "examples/as_base_class.cpp"
```
Output:
```json
--8<-- "examples/as_base_class.output"
```
See also
- json_base_class_t - type of the custom base class
Version history
- Added in version 3.13.0.