explicit operator bool meant "refers to a value", which silently differs from what a basic_json converts to. Use !v.is_discarded() instead. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
1.7 KiB
1.7 KiB
nlohmann::basic_json_view::is_discarded
bool is_discarded() const noexcept;
Returns whether this view is invalid, i.e. does not refer to a value. This is the case for a default-constructed
view (see (constructor)), and for root() of a document
that is itself discarded -- in particular, the root of a failed
parse() with allow_exceptions set to #!cpp false.
Return value
#!cpp true if the view is discarded, #!cpp false otherwise.
Exception safety
No-throw guarantee: this function never throws exceptions.
Complexity
Constant.
Notes
A basic_json_view is not convertible to #!cpp bool: such a conversion would mean "refers to a value", whereas
basic_json converts to the #!cpp bool it holds, so the same code would silently behave differently. Test
#!cpp !v.is_discarded() explicitly.
Examples
??? example
The example below classifies several parsed documents by the type of their root value, without materializing any
of them into a `BasicJsonType` value.
```cpp
--8<-- "examples/basic_json_view__type_predicates.cpp"
```
Output:
```json
--8<-- "examples/basic_json_view__type_predicates.output"
```
See also
- (constructor) - the default constructor creates a discarded view
- is_discarded (basic_json_document) - return whether the last parse failed
BasicJsonType::is_discarded- the corresponding function ofbasic_json
Version history
- Added in version 3.13.0.