Namespaces
Variants

std::experimental::ranges:: exchange

From cppreference.net
template < MoveConstructible T, class U = T >

requires Assignable < T & , U >

constexpr T exchange ( T & obj, U && new_val ) noexcept ( /* 见下文 */ ) ;
(ranges TS)

obj 的值替换为 new_value 并返回 obj 的旧值,操作等效于

T old_value = std::move(obj);
obj = std::forward<U>(new_value);
return old_value;

目录

参数

obj - 要替换其值的对象
new_value - 要赋给 obj 的值

返回值

obj 的旧值。

异常

noexcept 规范:
noexcept ( std:: is_nothrow_move_constructible < T > :: value &&
std:: is_nothrow_assignable < T & , U > :: value )

示例

参见

(C++14)
用新值替换参数并返回其先前值
(函数模板)