| Index: include/private/SkUtility.h
|
| diff --git a/include/private/SkUtility.h b/include/private/SkUtility.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a96e8fe292685772230d5b4fe59461d18e0359b2
|
| --- /dev/null
|
| +++ b/include/private/SkUtility.h
|
| @@ -0,0 +1,32 @@
|
| +/*
|
| + * Copyright 2015 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef SkUtility_DEFINED
|
| +#define SkUtility_DEFINED
|
| +
|
| +#include "SkTLogic.h"
|
| +
|
| +namespace skstd {
|
| +
|
| +template <typename T> inline remove_reference_t<T>&& move(T&& t) {
|
| + return static_cast<remove_reference_t<T>&&>(t);
|
| +}
|
| +
|
| +template <typename T> inline T&& forward(remove_reference_t<T>& t) /*noexcept*/ {
|
| + return static_cast<T&&>(t);
|
| +}
|
| +template <typename T> inline T&& forward(remove_reference_t<T>&& t) /*noexcept*/ {
|
| + static_assert(!is_lvalue_reference<T>::value,
|
| + "Forwarding an rvalue reference as an lvalue reference is not allowed.");
|
| + return static_cast<T&&>(t);
|
| +}
|
| +
|
| +template <typename T> add_rvalue_reference_t<T> declval();
|
| +
|
| +} // namespace skstd
|
| +
|
| +#endif
|
|
|