* docs: writing generic code for json_view A "Writing generic code" section on the json_view page: why a function taking json_view accepts no other view, the three signatures for editable, read-only, or either kind of view (passed by value), why the modes do not convert, is_json_view, and how a from_json() reads views (constrained to json values and views; the macros and the library's conversions do it already) with what differs then (duplicate keys, JSON_DIAGNOSTICS paths). Signed-off-by: Niels Lohmann <mail@nlohmann.me> * docs: name the documents the generic view function accepts Signed-off-by: Niels Lohmann <mail@nlohmann.me> * docs: views of read-only documents convert to editable views Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Niels Lohmann <mail@nlohmann.me>
1.8 KiB
1.8 KiB
nlohmann::is_json_view
Defined in header <nlohmann/json_view.hpp>
template<typename T>
struct is_json_view;
A type trait: #!cpp is_json_view<T>::value is #!cpp true if T is a basic_json_view
of any BasicJsonType and any view_mode -- json_view,
json_editable_view, ordered_json_view, ... -- and
#!cpp false otherwise, for basic_json as well.
It is meant for constraining templates that accept views, in particular a from_json() that should read views
directly: get<T>() on a view calls a from_json() with the view only if that from_json()
accepts views but not arbitrary types.
Template parameters
T- the type to check (without cv-qualifiers or references)
Notes
A view is recognized by its member type basic_json_type (a basic_json specialization) and
its materialize() returning that type, so the trait needs no declaration of the
view class.
Examples
??? example
The example below shows the trait, and a `from_json()` constrained to `json` values and views: `get<T>()` on a view
reads the view directly.
```cpp
--8<-- "examples/is_json_view.cpp"
```
Output:
```
--8<-- "examples/is_json_view.output"
```
See also
- basic_json_view - a handle to one value of a document
- get - which conversions read the view directly
- view_mode - read-only or editable
- Writing generic code - functions and
from_json()for views
Version history
Added in version 3.13.0.