From 3274ae068eb535a6514b63020e44ea5da8b719ad Mon Sep 17 00:00:00 2001 From: CanftIn Date: Wed, 2 Nov 2022 14:58:53 +0800 Subject: [PATCH] Fix first param forward by value in bind_first. --- include/chaiscript/dispatchkit/bind_first.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/chaiscript/dispatchkit/bind_first.hpp b/include/chaiscript/dispatchkit/bind_first.hpp index 7b8bfed8..3cf3fd33 100644 --- a/include/chaiscript/dispatchkit/bind_first.hpp +++ b/include/chaiscript/dispatchkit/bind_first.hpp @@ -33,15 +33,15 @@ namespace chaiscript template auto bind_first(Ret (*f)(P1, Param...), O&& o) { - return [f, o](Param...param) -> Ret { - return f(std::forward(o), std::forward(param)...); + return [f, o = std::forward(o)](Param...param) -> Ret { + return f(o, std::forward(param)...); }; } template auto bind_first(Ret (Class::*f)(Param...), O&& o) { - return [f, o](Param...param) -> Ret { + return [f, o = std::forward(o)](Param...param) -> Ret { return (detail::get_pointer(o)->*f)(std::forward(param)...); }; } @@ -49,7 +49,7 @@ namespace chaiscript template auto bind_first(Ret (Class::*f)(Param...) const, O&& o) { - return [f, o](Param...param) -> Ret { + return [f, o = std::forward(o)](Param...param) -> Ret { return (detail::get_pointer(o)->*f)(std::forward(param)...); }; @@ -58,7 +58,7 @@ namespace chaiscript template auto bind_first(const std::function &f, O&& o) { - return [f, o](Param...param) -> Ret { + return [f, o = std::forward(o)](Param...param) -> Ret { return f(o, std::forward(param)...); }; } @@ -66,7 +66,7 @@ namespace chaiscript template auto bind_first(const F &fo, O&& o, Ret (Class::*f)(P1, Param...) const) { - return [fo, o, f](Param ...param) -> Ret { + return [fo, o = std::forward(o), f](Param ...param) -> Ret { return (fo.*f)(o, std::forward(param)...); };