📝 fix links to cppreference named requirements

"Concepts" have been renamed to "named requirements".
This is because P0898R3 Standard Library Concepts has been merged into
C++20.
Cppreference have moved their links accordingly.
This commit is contained in:
Julius Rakow 2018-06-24 22:30:37 +02:00
parent 9f00db48d9
commit 963d06a13c
5 changed files with 73 additions and 73 deletions

View file

@ -288,7 +288,7 @@ json j = json::parse(v);
### STL-like access ### STL-like access
We designed the JSON class to behave just like an STL container. In fact, it satisfies the [**ReversibleContainer**](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) requirement. We designed the JSON class to behave just like an STL container. In fact, it satisfies the [**ReversibleContainer**](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) requirement.
```cpp ```cpp
// create an array using push_back // create an array using push_back
@ -611,7 +611,7 @@ Some important things:
* Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined). * Those methods **MUST** be in your type's namespace (which can be the global namespace), or the library will not be able to locate them (in this example, they are in namespace `ns`, where `person` is defined).
* Those methods **MUST** be available (e.g., properly headers must be included) everywhere you use the implicit conversions. Look at [issue 1108](https://github.com/nlohmann/json/issues/1108) for errors that may occur otherwise. * Those methods **MUST** be available (e.g., properly headers must be included) everywhere you use the implicit conversions. Look at [issue 1108](https://github.com/nlohmann/json/issues/1108) for errors that may occur otherwise.
* When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](https://en.cppreference.com/w/cpp/concept/DefaultConstructible). (There is a way to bypass this requirement described later.) * When using `get<your_type>()`, `your_type` **MUST** be [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). (There is a way to bypass this requirement described later.)
* In function `from_json`, use function [`at()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a93403e803947b86f4da2d1fb3345cf2c.html#a93403e803947b86f4da2d1fb3345cf2c) to access the object values rather than `operator[]`. In case a key does not exist, `at` throws an exception that you can handle, whereas `operator[]` exhibits undefined behavior. * In function `from_json`, use function [`at()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a93403e803947b86f4da2d1fb3345cf2c.html#a93403e803947b86f4da2d1fb3345cf2c) to access the object values rather than `operator[]`. In case a key does not exist, `at` throws an exception that you can handle, whereas `operator[]` exhibits undefined behavior.
* In case your type contains several `operator=` definitions, code like `your_variable = your_json;` [may not compile](https://github.com/nlohmann/json/issues/667). You need to write `your_variable = your_json.get<decltype your_variable>();` instead. * In case your type contains several `operator=` definitions, code like `your_variable = your_json;` [may not compile](https://github.com/nlohmann/json/issues/667). You need to write `your_variable = your_json.get<decltype your_variable>();` instead.
* You do not need to add serializers or deserializers for STL types like `std::vector`: the library already implements these. * You do not need to add serializers or deserializers for STL types like `std::vector`: the library already implements these.
@ -672,7 +672,7 @@ namespace nlohmann {
#### How can I use `get()` for non-default constructible/non-copyable types? #### How can I use `get()` for non-default constructible/non-copyable types?
There is a way, if your type is [MoveConstructible](https://en.cppreference.com/w/cpp/concept/MoveConstructible). You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload: There is a way, if your type is [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible). You will need to specialize the `adl_serializer` as well, but with a special `from_json` overload:
```cpp ```cpp
struct move_only_type { struct move_only_type {

View file

@ -31,7 +31,7 @@ This class implements a both iterators (iterator and const_iterator) for the
@requirement The class satisfies the following concept requirements: @requirement The class satisfies the following concept requirements:
- -
[BidirectionalIterator](https://en.cppreference.com/w/cpp/concept/BidirectionalIterator): [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
The iterator that can be moved can be moved in both directions (i.e. The iterator that can be moved can be moved in both directions (i.e.
incremented and decremented). incremented and decremented).

View file

@ -21,10 +21,10 @@ create @ref const_reverse_iterator).
@requirement The class satisfies the following concept requirements: @requirement The class satisfies the following concept requirements:
- -
[BidirectionalIterator](https://en.cppreference.com/w/cpp/concept/BidirectionalIterator): [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
The iterator that can be moved can be moved in both directions (i.e. The iterator that can be moved can be moved in both directions (i.e.
incremented and decremented). incremented and decremented).
- [OutputIterator](https://en.cppreference.com/w/cpp/concept/OutputIterator): - [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator):
It is possible to write to the pointed-to element (only if @a Base is It is possible to write to the pointed-to element (only if @a Base is
@ref iterator). @ref iterator).

View file

@ -101,42 +101,42 @@ and `from_json()` (@ref adl_serializer by default)
@requirement The class satisfies the following concept requirements: @requirement The class satisfies the following concept requirements:
- Basic - Basic
- [DefaultConstructible](https://en.cppreference.com/w/cpp/concept/DefaultConstructible): - [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible):
JSON values can be default constructed. The result will be a JSON null JSON values can be default constructed. The result will be a JSON null
value. value.
- [MoveConstructible](https://en.cppreference.com/w/cpp/concept/MoveConstructible): - [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible):
A JSON value can be constructed from an rvalue argument. A JSON value can be constructed from an rvalue argument.
- [CopyConstructible](https://en.cppreference.com/w/cpp/concept/CopyConstructible): - [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible):
A JSON value can be copy-constructed from an lvalue expression. A JSON value can be copy-constructed from an lvalue expression.
- [MoveAssignable](https://en.cppreference.com/w/cpp/concept/MoveAssignable): - [MoveAssignable](https://en.cppreference.com/w/cpp/named_req/MoveAssignable):
A JSON value van be assigned from an rvalue argument. A JSON value van be assigned from an rvalue argument.
- [CopyAssignable](https://en.cppreference.com/w/cpp/concept/CopyAssignable): - [CopyAssignable](https://en.cppreference.com/w/cpp/named_req/CopyAssignable):
A JSON value can be copy-assigned from an lvalue expression. A JSON value can be copy-assigned from an lvalue expression.
- [Destructible](https://en.cppreference.com/w/cpp/concept/Destructible): - [Destructible](https://en.cppreference.com/w/cpp/named_req/Destructible):
JSON values can be destructed. JSON values can be destructed.
- Layout - Layout
- [StandardLayoutType](https://en.cppreference.com/w/cpp/concept/StandardLayoutType): - [StandardLayoutType](https://en.cppreference.com/w/cpp/named_req/StandardLayoutType):
JSON values have JSON values have
[standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout): [standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout):
All non-static data members are private and standard layout types, the All non-static data members are private and standard layout types, the
class has no virtual functions or (virtual) base classes. class has no virtual functions or (virtual) base classes.
- Library-wide - Library-wide
- [EqualityComparable](https://en.cppreference.com/w/cpp/concept/EqualityComparable): - [EqualityComparable](https://en.cppreference.com/w/cpp/named_req/EqualityComparable):
JSON values can be compared with `==`, see @ref JSON values can be compared with `==`, see @ref
operator==(const_reference,const_reference). operator==(const_reference,const_reference).
- [LessThanComparable](https://en.cppreference.com/w/cpp/concept/LessThanComparable): - [LessThanComparable](https://en.cppreference.com/w/cpp/named_req/LessThanComparable):
JSON values can be compared with `<`, see @ref JSON values can be compared with `<`, see @ref
operator<(const_reference,const_reference). operator<(const_reference,const_reference).
- [Swappable](https://en.cppreference.com/w/cpp/concept/Swappable): - [Swappable](https://en.cppreference.com/w/cpp/named_req/Swappable):
Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of
other compatible types, using unqualified function call @ref swap(). other compatible types, using unqualified function call @ref swap().
- [NullablePointer](https://en.cppreference.com/w/cpp/concept/NullablePointer): - [NullablePointer](https://en.cppreference.com/w/cpp/named_req/NullablePointer):
JSON values can be compared against `std::nullptr_t` objects which are used JSON values can be compared against `std::nullptr_t` objects which are used
to model the `null` value. to model the `null` value.
- Container - Container
- [Container](https://en.cppreference.com/w/cpp/concept/Container): - [Container](https://en.cppreference.com/w/cpp/named_req/Container):
JSON values can be used like STL containers and provide iterator access. JSON values can be used like STL containers and provide iterator access.
- [ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer); - [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer);
JSON values can be used like STL containers and provide reverse iterator JSON values can be used like STL containers and provide reverse iterator
access. access.
@ -1735,7 +1735,7 @@ class basic_json
changes to any JSON value. changes to any JSON value.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is linear. - The complexity is linear.
- As postcondition, it holds: `other == basic_json(other)`. - As postcondition, it holds: `other == basic_json(other)`.
@ -1820,7 +1820,7 @@ class basic_json
exceptions. exceptions.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[MoveConstructible](https://en.cppreference.com/w/cpp/concept/MoveConstructible) [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible)
requirements. requirements.
@liveexample{The code below shows the move constructor explicitly called @liveexample{The code below shows the move constructor explicitly called
@ -1854,7 +1854,7 @@ class basic_json
@complexity Linear. @complexity Linear.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is linear. - The complexity is linear.
@ -1891,7 +1891,7 @@ class basic_json
@complexity Linear. @complexity Linear.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is linear. - The complexity is linear.
- All stored elements are destroyed and all memory is freed. - All stored elements are destroyed and all memory is freed.
@ -2522,8 +2522,8 @@ class basic_json
@brief get a value (explicit) @brief get a value (explicit)
Explicit type conversion between the JSON value and a compatible value Explicit type conversion between the JSON value and a compatible value
which is [CopyConstructible](https://en.cppreference.com/w/cpp/concept/CopyConstructible) which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
and [DefaultConstructible](https://en.cppreference.com/w/cpp/concept/DefaultConstructible). and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
The value is converted by calling the @ref json_serializer<ValueType> The value is converted by calling the @ref json_serializer<ValueType>
`from_json()` method. `from_json()` method.
@ -2583,8 +2583,8 @@ class basic_json
@brief get a value (explicit); special case @brief get a value (explicit); special case
Explicit type conversion between the JSON value and a compatible value Explicit type conversion between the JSON value and a compatible value
which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/concept/CopyConstructible) which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/concept/DefaultConstructible). and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
The value is converted by calling the @ref json_serializer<ValueType> The value is converted by calling the @ref json_serializer<ValueType>
`from_json()` method. `from_json()` method.
@ -3948,7 +3948,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
@ -3987,7 +3987,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `const_cast<const basic_json&>(*this).begin()`. - Has the semantics of `const_cast<const basic_json&>(*this).begin()`.
@ -4019,7 +4019,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
@ -4058,7 +4058,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `const_cast<const basic_json&>(*this).end()`. - Has the semantics of `const_cast<const basic_json&>(*this).end()`.
@ -4088,7 +4088,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `reverse_iterator(end())`. - Has the semantics of `reverse_iterator(end())`.
@ -4125,7 +4125,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `reverse_iterator(begin())`. - Has the semantics of `reverse_iterator(begin())`.
@ -4162,7 +4162,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `const_cast<const basic_json&>(*this).rbegin()`. - Has the semantics of `const_cast<const basic_json&>(*this).rbegin()`.
@ -4191,7 +4191,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `const_cast<const basic_json&>(*this).rend()`. - Has the semantics of `const_cast<const basic_json&>(*this).rend()`.
@ -4389,7 +4389,7 @@ class basic_json
false in the case of a string. false in the case of a string.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `begin() == end()`. - Has the semantics of `begin() == end()`.
@ -4460,7 +4460,7 @@ class basic_json
the case of a string. the case of a string.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `std::distance(begin(), end())`. - Has the semantics of `std::distance(begin(), end())`.
@ -4530,7 +4530,7 @@ class basic_json
@exceptionsafety No-throw guarantee: this function never throws exceptions. @exceptionsafety No-throw guarantee: this function never throws exceptions.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of returning `b.size()` where `b` is the largest - Has the semantics of returning `b.size()` where `b` is the largest

View file

@ -4740,7 +4740,7 @@ This class implements a both iterators (iterator and const_iterator) for the
@requirement The class satisfies the following concept requirements: @requirement The class satisfies the following concept requirements:
- -
[BidirectionalIterator](https://en.cppreference.com/w/cpp/concept/BidirectionalIterator): [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
The iterator that can be moved can be moved in both directions (i.e. The iterator that can be moved can be moved in both directions (i.e.
incremented and decremented). incremented and decremented).
@ -5460,10 +5460,10 @@ create @ref const_reverse_iterator).
@requirement The class satisfies the following concept requirements: @requirement The class satisfies the following concept requirements:
- -
[BidirectionalIterator](https://en.cppreference.com/w/cpp/concept/BidirectionalIterator): [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator):
The iterator that can be moved can be moved in both directions (i.e. The iterator that can be moved can be moved in both directions (i.e.
incremented and decremented). incremented and decremented).
- [OutputIterator](https://en.cppreference.com/w/cpp/concept/OutputIterator): - [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator):
It is possible to write to the pointed-to element (only if @a Base is It is possible to write to the pointed-to element (only if @a Base is
@ref iterator). @ref iterator).
@ -10907,42 +10907,42 @@ and `from_json()` (@ref adl_serializer by default)
@requirement The class satisfies the following concept requirements: @requirement The class satisfies the following concept requirements:
- Basic - Basic
- [DefaultConstructible](https://en.cppreference.com/w/cpp/concept/DefaultConstructible): - [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible):
JSON values can be default constructed. The result will be a JSON null JSON values can be default constructed. The result will be a JSON null
value. value.
- [MoveConstructible](https://en.cppreference.com/w/cpp/concept/MoveConstructible): - [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible):
A JSON value can be constructed from an rvalue argument. A JSON value can be constructed from an rvalue argument.
- [CopyConstructible](https://en.cppreference.com/w/cpp/concept/CopyConstructible): - [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible):
A JSON value can be copy-constructed from an lvalue expression. A JSON value can be copy-constructed from an lvalue expression.
- [MoveAssignable](https://en.cppreference.com/w/cpp/concept/MoveAssignable): - [MoveAssignable](https://en.cppreference.com/w/cpp/named_req/MoveAssignable):
A JSON value van be assigned from an rvalue argument. A JSON value van be assigned from an rvalue argument.
- [CopyAssignable](https://en.cppreference.com/w/cpp/concept/CopyAssignable): - [CopyAssignable](https://en.cppreference.com/w/cpp/named_req/CopyAssignable):
A JSON value can be copy-assigned from an lvalue expression. A JSON value can be copy-assigned from an lvalue expression.
- [Destructible](https://en.cppreference.com/w/cpp/concept/Destructible): - [Destructible](https://en.cppreference.com/w/cpp/named_req/Destructible):
JSON values can be destructed. JSON values can be destructed.
- Layout - Layout
- [StandardLayoutType](https://en.cppreference.com/w/cpp/concept/StandardLayoutType): - [StandardLayoutType](https://en.cppreference.com/w/cpp/named_req/StandardLayoutType):
JSON values have JSON values have
[standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout): [standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout):
All non-static data members are private and standard layout types, the All non-static data members are private and standard layout types, the
class has no virtual functions or (virtual) base classes. class has no virtual functions or (virtual) base classes.
- Library-wide - Library-wide
- [EqualityComparable](https://en.cppreference.com/w/cpp/concept/EqualityComparable): - [EqualityComparable](https://en.cppreference.com/w/cpp/named_req/EqualityComparable):
JSON values can be compared with `==`, see @ref JSON values can be compared with `==`, see @ref
operator==(const_reference,const_reference). operator==(const_reference,const_reference).
- [LessThanComparable](https://en.cppreference.com/w/cpp/concept/LessThanComparable): - [LessThanComparable](https://en.cppreference.com/w/cpp/named_req/LessThanComparable):
JSON values can be compared with `<`, see @ref JSON values can be compared with `<`, see @ref
operator<(const_reference,const_reference). operator<(const_reference,const_reference).
- [Swappable](https://en.cppreference.com/w/cpp/concept/Swappable): - [Swappable](https://en.cppreference.com/w/cpp/named_req/Swappable):
Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of
other compatible types, using unqualified function call @ref swap(). other compatible types, using unqualified function call @ref swap().
- [NullablePointer](https://en.cppreference.com/w/cpp/concept/NullablePointer): - [NullablePointer](https://en.cppreference.com/w/cpp/named_req/NullablePointer):
JSON values can be compared against `std::nullptr_t` objects which are used JSON values can be compared against `std::nullptr_t` objects which are used
to model the `null` value. to model the `null` value.
- Container - Container
- [Container](https://en.cppreference.com/w/cpp/concept/Container): - [Container](https://en.cppreference.com/w/cpp/named_req/Container):
JSON values can be used like STL containers and provide iterator access. JSON values can be used like STL containers and provide iterator access.
- [ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer); - [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer);
JSON values can be used like STL containers and provide reverse iterator JSON values can be used like STL containers and provide reverse iterator
access. access.
@ -12541,7 +12541,7 @@ class basic_json
changes to any JSON value. changes to any JSON value.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is linear. - The complexity is linear.
- As postcondition, it holds: `other == basic_json(other)`. - As postcondition, it holds: `other == basic_json(other)`.
@ -12626,7 +12626,7 @@ class basic_json
exceptions. exceptions.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[MoveConstructible](https://en.cppreference.com/w/cpp/concept/MoveConstructible) [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible)
requirements. requirements.
@liveexample{The code below shows the move constructor explicitly called @liveexample{The code below shows the move constructor explicitly called
@ -12660,7 +12660,7 @@ class basic_json
@complexity Linear. @complexity Linear.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is linear. - The complexity is linear.
@ -12697,7 +12697,7 @@ class basic_json
@complexity Linear. @complexity Linear.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is linear. - The complexity is linear.
- All stored elements are destroyed and all memory is freed. - All stored elements are destroyed and all memory is freed.
@ -13328,8 +13328,8 @@ class basic_json
@brief get a value (explicit) @brief get a value (explicit)
Explicit type conversion between the JSON value and a compatible value Explicit type conversion between the JSON value and a compatible value
which is [CopyConstructible](https://en.cppreference.com/w/cpp/concept/CopyConstructible) which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
and [DefaultConstructible](https://en.cppreference.com/w/cpp/concept/DefaultConstructible). and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
The value is converted by calling the @ref json_serializer<ValueType> The value is converted by calling the @ref json_serializer<ValueType>
`from_json()` method. `from_json()` method.
@ -13389,8 +13389,8 @@ class basic_json
@brief get a value (explicit); special case @brief get a value (explicit); special case
Explicit type conversion between the JSON value and a compatible value Explicit type conversion between the JSON value and a compatible value
which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/concept/CopyConstructible) which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible)
and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/concept/DefaultConstructible). and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible).
The value is converted by calling the @ref json_serializer<ValueType> The value is converted by calling the @ref json_serializer<ValueType>
`from_json()` method. `from_json()` method.
@ -14754,7 +14754,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
@ -14793,7 +14793,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `const_cast<const basic_json&>(*this).begin()`. - Has the semantics of `const_cast<const basic_json&>(*this).begin()`.
@ -14825,7 +14825,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
@ -14864,7 +14864,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `const_cast<const basic_json&>(*this).end()`. - Has the semantics of `const_cast<const basic_json&>(*this).end()`.
@ -14894,7 +14894,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `reverse_iterator(end())`. - Has the semantics of `reverse_iterator(end())`.
@ -14931,7 +14931,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `reverse_iterator(begin())`. - Has the semantics of `reverse_iterator(begin())`.
@ -14968,7 +14968,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `const_cast<const basic_json&>(*this).rbegin()`. - Has the semantics of `const_cast<const basic_json&>(*this).rbegin()`.
@ -14997,7 +14997,7 @@ class basic_json
@complexity Constant. @complexity Constant.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[ReversibleContainer](https://en.cppreference.com/w/cpp/concept/ReversibleContainer) [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `const_cast<const basic_json&>(*this).rend()`. - Has the semantics of `const_cast<const basic_json&>(*this).rend()`.
@ -15195,7 +15195,7 @@ class basic_json
false in the case of a string. false in the case of a string.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `begin() == end()`. - Has the semantics of `begin() == end()`.
@ -15266,7 +15266,7 @@ class basic_json
the case of a string. the case of a string.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of `std::distance(begin(), end())`. - Has the semantics of `std::distance(begin(), end())`.
@ -15336,7 +15336,7 @@ class basic_json
@exceptionsafety No-throw guarantee: this function never throws exceptions. @exceptionsafety No-throw guarantee: this function never throws exceptions.
@requirement This function helps `basic_json` satisfying the @requirement This function helps `basic_json` satisfying the
[Container](https://en.cppreference.com/w/cpp/concept/Container) [Container](https://en.cppreference.com/w/cpp/named_req/Container)
requirements: requirements:
- The complexity is constant. - The complexity is constant.
- Has the semantics of returning `b.size()` where `b` is the largest - Has the semantics of returning `b.size()` where `b` is the largest