/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkExchange_DEFINED #define SkExchange_DEFINED #include <utility> namespace skstd { // std::exchange is in C++14 template<typename T, typename U = T> inline static T exchange(T& obj, U&& new_val) { T old_val = std::move(obj); obj = std::forward<U>(new_val); return old_val; } } #endif // SkExchange_DEFINED