Namespaces
Variants

std::experimental::ranges:: exchange

From cppreference.net
Definido en el encabezado <experimental/ranges/utility>
template < MoveConstructible T, class U = T >

requires Assignable < T & , U >

constexpr T exchange ( T & obj, U && new_val ) noexcept ( /* ver más abajo */ ) ;
(ranges TS)

Reemplaza el valor de obj con new_value y devuelve el valor anterior de obj , como si fuera mediante

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

Contenidos

Parámetros

obj - objeto cuyo valor reemplazar
new_value - el valor a asignar a obj

Valor de retorno

El valor antiguo de obj .

Excepciones

noexcept especificación:
noexcept ( std:: is_nothrow_move_constructible < T > :: value &&
std:: is_nothrow_assignable < T & , U > :: value )

Ejemplo

Véase también

(C++14)
reemplaza el argumento con un nuevo valor y devuelve su valor anterior
(plantilla de función)