diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkExchange.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/core/SkExchange.h b/src/core/SkExchange.h new file mode 100644 index 0000000000..50e2fe983d --- /dev/null +++ b/src/core/SkExchange.h @@ -0,0 +1,25 @@ +/* + * 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 |