Index: include/private/SkFunction.h |
diff --git a/include/private/SkFunction.h b/include/private/SkFunction.h |
index 8e41cba929a08b4303247f5f1b51474ae2244d66..024ba7c9b2b15bd899587801a6723b9b07b189ac 100644 |
--- a/include/private/SkFunction.h |
+++ b/include/private/SkFunction.h |
@@ -35,13 +35,10 @@ public: |
R operator()(Args... args) const { |
SkASSERT(fFunction.get()); |
- return fFunction->call(Forward(args)...); |
+ return fFunction->call(skstd::forward<Args>(args)...); |
} |
private: |
- // ~= std::forward. This moves its argument if possible, falling back to a copy if not. |
- template <typename T> static T&& Forward(T& v) { return (T&&)v; } |
- |
struct Interface { |
virtual ~Interface() {} |
virtual R call(Args...) const = 0; |
@@ -53,7 +50,7 @@ private: |
public: |
LambdaImpl(const Fn& fn) : fFn(fn) {} |
- R call(Args... args) const override { return fFn(Forward(args)...); } |
+ R call(Args... args) const override { return fFn(skstd::forward<Args>(args)...); } |
Interface* clone() const override { return SkNEW_ARGS(LambdaImpl<Fn>, (fFn)); } |
private: |
Fn fFn; |
@@ -63,7 +60,7 @@ private: |
public: |
FnPtrImpl(R (*fn)(Args...)) : fFn(fn) {} |
- R call(Args... args) const override { return fFn(Forward(args)...); } |
+ R call(Args... args) const override { return fFn(skstd::forward<Args>(args)...); } |
Interface* clone() const override { return SkNEW_ARGS(FnPtrImpl, (fFn)); } |
private: |
R (*fFn)(Args...); |