forked from OctaForge/libostd
correctly forward
This commit is contained in:
parent
9a7a832fe3
commit
90cecea052
|
@ -160,23 +160,23 @@ namespace octa {
|
||||||
MemFn(R T::*ptr): p_ptr(ptr) {}
|
MemFn(R T::*ptr): p_ptr(ptr) {}
|
||||||
template<typename... A>
|
template<typename... A>
|
||||||
auto operator()(T &obj, A &&...args) ->
|
auto operator()(T &obj, A &&...args) ->
|
||||||
decltype(((obj).*(p_ptr))(args...)) {
|
decltype(((obj).*(p_ptr))(forward<A>(args)...)) {
|
||||||
return ((obj).*(p_ptr))(args...);
|
return ((obj).*(p_ptr))(forward<A>(args)...);
|
||||||
}
|
}
|
||||||
template<typename... A>
|
template<typename... A>
|
||||||
auto operator()(const T &obj, A &&...args) ->
|
auto operator()(const T &obj, A &&...args) ->
|
||||||
decltype(((obj).*(p_ptr))(args...)) const {
|
decltype(((obj).*(p_ptr))(forward<A>(args)...)) const {
|
||||||
return ((obj).*(p_ptr))(args...);
|
return ((obj).*(p_ptr))(forward<A>(args)...);
|
||||||
}
|
}
|
||||||
template<typename... A>
|
template<typename... A>
|
||||||
auto operator()(T *obj, A &&...args) ->
|
auto operator()(T *obj, A &&...args) ->
|
||||||
decltype(((obj)->*(p_ptr))(args...)) {
|
decltype(((obj)->*(p_ptr))(forward<A>(args)...)) {
|
||||||
return ((obj)->*(p_ptr))(args...);
|
return ((obj)->*(p_ptr))(forward<A>(args)...);
|
||||||
}
|
}
|
||||||
template<typename... A>
|
template<typename... A>
|
||||||
auto operator()(const T *obj, A &&...args) ->
|
auto operator()(const T *obj, A &&...args) ->
|
||||||
decltype(((obj)->*(p_ptr))(args...)) const {
|
decltype(((obj)->*(p_ptr))(forward<A>(args)...)) const {
|
||||||
return ((obj)->*(p_ptr))(args...);
|
return ((obj)->*(p_ptr))(forward<A>(args)...);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue