| # <small>nlohmann::basic_json::</small>swap |
| |
| ```cpp |
| // (1) |
| void swap(reference other) noexcept ( |
| std::is_nothrow_move_constructible<value_t>::value && |
| std::is_nothrow_move_assignable<value_t>::value && |
| std::is_nothrow_move_constructible<json_value>::value && |
| std::is_nothrow_move_assignable<json_value>::value |
| ); |
| |
| // (2) |
| friend void swap(reference left, reference right) noexcept ( |
| std::is_nothrow_move_constructible<value_t>::value && |
| std::is_nothrow_move_assignable<value_t>::value && |
| std::is_nothrow_move_constructible<json_value>::value && |
| std::is_nothrow_move_assignable<json_value>::value |
| ); |
| |
| // (3) |
| void swap(array_t& other); |
| |
| // (4) |
| void swap(object_t& other); |
| |
| // (5) |
| void swap(string_t& other); |
| |
| // (6) |
| void swap(binary_t& other); |
| |
| // (7) |
| void swap(typename binary_t::container_type& other); |
| ``` |
| |
| 1. Exchanges the contents of the JSON value with those of `other`. Does not invoke any move, copy, or swap operations on |
| individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. |
| 2. Exchanges the contents of the JSON value from `left` with those of `right`. Does not invoke any move, copy, or swap |
| operations on individual elements. All iterators and references remain valid. The past-the-end iterator is |
| invalidated. Implemented as a friend function callable via ADL. |
| 3. Exchanges the contents of a JSON array with those of `other`. Does not invoke any move, copy, or swap operations on |
| individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. |
| 4. Exchanges the contents of a JSON object with those of `other`. Does not invoke any move, copy, or swap operations on |
| individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. |
| 5. Exchanges the contents of a JSON string with those of `other`. Does not invoke any move, copy, or swap operations on |
| individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. |
| 6. Exchanges the contents of a binary value with those of `other`. Does not invoke any move, copy, or swap operations on |
| individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. |
| 7. Exchanges the contents of a binary value with those of `other`. Does not invoke any move, copy, or swap operations on |
| individual elements. All iterators and references remain valid. The past-the-end iterator is invalidated. Unlike |
| version (6), no binary subtype is involved. |
| |
| ## Parameters |
| |
| `other` (in, out) |
| : value to exchange the contents with |
| |
| `left` (in, out) |
| : value to exchange the contents with |
| |
| `right` (in, out) |
| : value to exchange the contents with |
| |
| ## Exceptions |
| |
| 1. No-throw guarantee: this function never throws exceptions. |
| 2. No-throw guarantee: this function never throws exceptions. |
| 3. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than |
| arrays; example: `"cannot use swap(array_t&) with boolean"` |
| 4. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than |
| objects; example: `"cannot use swap(object_t&) with boolean"` |
| 5. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than |
| strings; example: `"cannot use swap(string_t&) with boolean"` |
| 6. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than |
| binaries; example: `"cannot use swap(binary_t&) with boolean"` |
| 7. Throws [`type_error.310`](../../home/exceptions.md#jsonexceptiontype_error310) if called on JSON values other than |
| binaries; example: `"cannot use swap(binary_t::container_type&) with boolean"` |
| |
| ## Complexity |
| |
| Constant. |
| |
| ## Examples |
| |
| ??? example "Example: Swap JSON value (1, 2)" |
| |
| The example below shows how JSON values can be swapped with `swap()`. |
| |
| ```cpp |
| --8<-- "examples/swap__reference.cpp" |
| ``` |
| |
| Output: |
| |
| ```json |
| --8<-- "examples/swap__reference.output" |
| ``` |
| |
| ??? example "Example: Swap array (3)" |
| |
| The example below shows how arrays can be swapped with `swap()`. |
| |
| ```cpp |
| --8<-- "examples/swap__array_t.cpp" |
| ``` |
| |
| Output: |
| |
| ```json |
| --8<-- "examples/swap__array_t.output" |
| ``` |
| |
| ??? example "Example: Swap object (4)" |
| |
| The example below shows how objects can be swapped with `swap()`. |
| |
| ```cpp |
| --8<-- "examples/swap__object_t.cpp" |
| ``` |
| |
| Output: |
| |
| ```json |
| --8<-- "examples/swap__object_t.output" |
| ``` |
| |
| ??? example "Example: Swap string (5)" |
| |
| The example below shows how strings can be swapped with `swap()`. |
| |
| ```cpp |
| --8<-- "examples/swap__string_t.cpp" |
| ``` |
| |
| Output: |
| |
| ```json |
| --8<-- "examples/swap__string_t.output" |
| ``` |
| |
| ??? example "Example: Swap binary (6)" |
| |
| The example below shows how binary values can be swapped with `swap()`. |
| |
| ```cpp |
| --8<-- "examples/swap__binary_t.cpp" |
| ``` |
| |
| Output: |
| |
| ```json |
| --8<-- "examples/swap__binary_t.output" |
| ``` |
| |
| ## See also |
| |
| - [std::swap<basic_json\>](std_swap.md) |
| - [operator=](operator=.md) copy assignment |
| - [basic_json](basic_json.md) create a JSON value |
| |
| ## Version history |
| |
| 1. Since version 1.0.0. |
| 2. Since version 1.0.0. |
| 3. Since version 1.0.0. |
| 4. Since version 1.0.0. |
| 5. Since version 1.0.0. |
| 6. Since version 3.8.0. |
| 7. Since version 3.8.0. |