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
This commit is contained in:
parent
5cf7b6175e
commit
eb0d91cfa2
25
src/core/SkExchange.h
Normal file
25
src/core/SkExchange.h
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user