diff --git a/subprocess.hpp b/subprocess.hpp index dbae2eb..295550e 100755 --- a/subprocess.hpp +++ b/subprocess.hpp @@ -608,7 +608,7 @@ public: preexec_func() {} template - preexec_func(Func f): holder_(new FuncHolder(f)) + preexec_func(Func f): holder_(new FuncHolder(std::move(f))) {} void operator()() { @@ -621,8 +621,8 @@ private: }; template struct FuncHolder: HolderBase { - FuncHolder(T func): func_(func) {} - void operator()() const override {} + FuncHolder(T func): func_(std::move(func)) {} + void operator()() const override { func_(); } // The function pointer/reference T func_; };