| Home | Libraries | People | FAQ | More

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

Swap two objects.

###### Synopsis

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

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

###### Description

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.

###### Effects

    lhs.swap( rhs );

###### Complexity

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

###### Exception Safety

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

###### Parameters

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

###### See Also

`object::swap`

Convenience header `<boost/json.hpp>`