C++ 参考手册

位置:首页 > > std::experimental::ranges::exchange

定义于头文件 <experimental/ranges/utility>
template< ranges::MoveConstructible T, class U = T >

    requires ranges::Assignable<T&, U>

constexpr T exchange(T& obj, U&& new_val) noexcept(/* see below */);
(范围 TS)

new_value 替换 obj 的值并返回 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)
将实参替换为一个新值,并返回其先前值
(函数模板)