Giriş
C++14 ile geliyor. İmzası şöyle
Bir if koşulunun tek bir kere çalışmasını istersek şöyle yaparız.
C++14 ile geliyor. İmzası şöyle
template< class T, class U = T >
T exchange( T& obj, U&& new_value );
Açıklaması şöyleİçi şöyledir.Replaces the value of obj with new_value and returns the old value of obj.
template<class T, class U = T>
T exchange(T& obj, U&& new_value)
{
T old_value = std::move(obj);
obj = std::forward<U>(new_value);
return old_value;
}
ÖrnekBir if koşulunun tek bir kere çalışmasını istersek şöyle yaparız.
if (static bool do_once = true; std::exchange(do_once, false)){...}
std::exhange() kullanmak istemiyorsak şöyle yaparız.if (static bool do_once = true; do_once) { // enter only once
std::cout << "hello one-shot" << std::endl;
// possibly much more code
do_once = false;
}