diff options
author | csmartdalton <csmartdalton@google.com> | 2016-09-29 13:11:23 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-29 13:11:23 -0700 |
commit | eb0d91cfa278bceba3ec9a3fdcbc7c47a2ed3a3f (patch) | |
tree | 8005d5920c4e367259e35ba37ba900451533a0f4 /src/core | |
parent | 5cf7b6175ecf2c469bc6fedb815ba68f748f02d2 (diff) |
Add skstd version of std::exchange
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2381793004
Review-Url: https://codereview.chromium.org/2381793004
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 |