Namespaces
Variants

std::experimental::ranges:: exchange

From cppreference.net
헤더 파일에 정의됨 <experimental/ranges/utility>
template < MoveConstructible T, class U = T >

requires Assignable < T & , U >

constexpr T exchange ( T & obj, U && new_val ) noexcept ( /* see below */ ) ;
(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)
인수를 새 값으로 교체하고 이전 값을 반환합니다
(함수 템플릿)