Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright 2016 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkExchange_DEFINED
      9 #define SkExchange_DEFINED
     10 
     11 #include <utility>
     12 
     13 namespace skstd {
     14 
     15 // std::exchange is in C++14
     16 template<typename T, typename U = T>
     17 inline static T exchange(T& obj, U&& new_val) {
     18     T old_val = std::move(obj);
     19     obj = std::forward<U>(new_val);
     20     return old_val;
     21 }
     22 
     23 }
     24 
     25 #endif  // SkExchange_DEFINED
     26