Namensräume
Varianten
Aktionen

std::experimental::ranges::exchange

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Allgemeine Dienstprogramme-Bibliothek
Hilfskomponenten
exchange
Funktionsobjekte
Metaprogrammierung und Typ-Traits
Getaggte Paare und Tupel
                          
Tag-Spezifizierer
                                      
                          
 
Definiert in Header <experimental/ranges/utility>
template< MoveConstructible T, class U = T >

    requires Assignable<T&, U>

constexpr T exchange( T& obj, U&& new_val ) noexcept(/* siehe unten */);
(Ranges TS)

Ersetzt den Wert von obj durch new_value und gibt den alten Wert von obj zurück, als ob durch

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

Inhalt

[bearbeiten] Parameter

obj - Das Objekt, dessen Wert ersetzt werden soll
new_value - Der Wert, der obj zugewiesen werden soll

[bearbeiten] Rückgabewert

Der alte Wert von obj.

[bearbeiten] Ausnahmen

noexcept-Spezifikation:  
noexcept(std::is_nothrow_move_constructible<T>::value &&
         std::is_nothrow_assignable<T&, U>::value)

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

(C++14)
ersetzt das Argument durch einen neuen Wert und gibt seinen vorherigen Wert zurück
(Funktionsvorlage) [edit]