| Home | Libraries | People | FAQ | More

###### object::swap (1 of 2 overloads)

Swap two objects.

<h7> Synopsis </h7>

Defined in header `<boost/json/object.hpp>`

    friend void
    swap(
        object& lhs,
        object& rhs);

<h7> Description </h7>

Exchanges the contents of the object `lhs` with another object `rhs`. Ownership of the respective `memory_resource` objects is not transferred.

- If `*lhs.storage() == *rhs.storage()`, ownership of the underlying memory is swapped in constant time, with no possibility of exceptions. All iterators and references remain valid.
- If `*lhs.storage() != *rhs.storage()`, the contents are logically swapped by making a copy, which can throw. In this case all iterators and references are invalidated.

<h7> Effects </h7>

    lhs.swap( rhs );

<h7> Complexity </h7>

Constant or linear in `lhs.size() + rhs.size()`.

<h7> Exception Safety </h7>

Strong guarantee. Calls to `memory_resource::allocate` may throw.

<h7> Parameters </h7>

Name | Description
--- | ---
`lhs` | The object to exchange.
`rhs` | The object to exchange. If `&lhs == &rhs`, this function call has no effect.

<h7> See Also </h7>

`object::swap`

Convenience header `<boost/json.hpp>`