名前空間
変種
操作

std::experimental::ranges::exchange

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
汎用ユーティリティライブラリ
ユーティリティコンポーネント
exchange
関数オブジェクト
メタプログラミングと型特性
タグ付きペアとタプル
                          
タグ指定子
                                      
                          
 
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)
引数を新しい値で置き換え、その前の値を返す
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)