forked from boostorg/core
Add documentation for exchange
This commit is contained in:
@ -42,6 +42,7 @@ criteria for inclusion is that the utility component be:
|
|||||||
[include checked_delete.qbk]
|
[include checked_delete.qbk]
|
||||||
[include demangle.qbk]
|
[include demangle.qbk]
|
||||||
[include enable_if.qbk]
|
[include enable_if.qbk]
|
||||||
|
[include exchange.qbk]
|
||||||
[include explicit_operator_bool.qbk]
|
[include explicit_operator_bool.qbk]
|
||||||
[include ignore_unused.qbk]
|
[include ignore_unused.qbk]
|
||||||
[include is_same.qbk]
|
[include is_same.qbk]
|
||||||
|
62
doc/exchange.qbk
Normal file
62
doc/exchange.qbk
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
[/
|
||||||
|
Copyright 2018 Glen Joseph Fernandes
|
||||||
|
(glenjofe@gmail.com)
|
||||||
|
|
||||||
|
Distributed under the Boost Software License, Version 1.0.
|
||||||
|
(http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
]
|
||||||
|
|
||||||
|
[section:exchange exchange]
|
||||||
|
|
||||||
|
[simplesect Authors]
|
||||||
|
|
||||||
|
* Glen Fernandes
|
||||||
|
|
||||||
|
[endsimplesect]
|
||||||
|
|
||||||
|
[section Overview]
|
||||||
|
|
||||||
|
The header <boost/core/exchange.hpp> provides the function template
|
||||||
|
`boost::exchange` which is an implementation of the `std::exchange`
|
||||||
|
function introduced in C++14.
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[section Examples]
|
||||||
|
|
||||||
|
The following example shows `boost::exchange` used to simplify the
|
||||||
|
implementation of a move constructor.
|
||||||
|
|
||||||
|
```
|
||||||
|
Node(Node&& other)
|
||||||
|
: head_(boost::exchange(other.head_, nullptr))
|
||||||
|
, tail_(boost::exchange(other.tail_, nullptr)) { }
|
||||||
|
```
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[section Reference]
|
||||||
|
|
||||||
|
```
|
||||||
|
namespace boost {
|
||||||
|
template<class T, class U = T>
|
||||||
|
constexpr T exchange(T& t, U&& u);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
[section Functions]
|
||||||
|
|
||||||
|
[*`template<class T, class U = T> constexpr T exchange(T& t, U&& u);`]
|
||||||
|
|
||||||
|
Equivalent to:
|
||||||
|
|
||||||
|
```
|
||||||
|
T v = std::move(t);
|
||||||
|
t = std::forward<U>(u);
|
||||||
|
return v;
|
||||||
|
```
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[endsect]
|
Reference in New Issue
Block a user