diff options
author | Murray Cumming <murrayc@murrayc.com> | 2016-03-05 12:29:43 +0100 |
---|---|---|
committer | Murray Cumming <murrayc@murrayc.com> | 2016-03-05 12:29:44 +0100 |
commit | 74319a3cadfb0f0d8cbcb0bd4721cd60a6ff7c7c (patch) | |
tree | 6f59bd0216a1cbfc8bfc7dc0bc194af4013074b6 | |
parent | c67ddd63421915dc0f37a2f47adb5b49a10b2a66 (diff) | |
download | sigc++-74319a3cadfb0f0d8cbcb0bd4721cd60a6ff7c7c.tar.gz |
mem_functor_base: Remove T_return template parameter.
Instead using std::result_of<> to discover it from the T_func.
-rw-r--r-- | sigc++/adaptors/retype.h | 6 | ||||
-rw-r--r-- | sigc++/functors/macros/mem_fun.h.m4 | 12 |
2 files changed, 9 insertions, 9 deletions
diff --git a/sigc++/adaptors/retype.h b/sigc++/adaptors/retype.h index 0fb029f..c9025e2 100644 --- a/sigc++/adaptors/retype.h +++ b/sigc++/adaptors/retype.h @@ -137,10 +137,10 @@ retype(const pointer_functor<T_return, T_arg...>& _A_functor) * * @ingroup retype */ -template <class T_func, class T_return, class T_obj, class... T_arg> +template <class T_func, class T_obj, class... T_arg> inline decltype(auto) -retype(const mem_functor_base<T_func, T_return, T_obj, T_arg...>& _A_functor) -{ return retype_functor<mem_functor_base<T_func, T_return, T_obj, T_arg...>, T_arg...> +retype(const mem_functor_base<T_func, T_obj, T_arg...>& _A_functor) +{ return retype_functor<mem_functor_base<T_func, T_obj, T_arg...>, T_arg...> (_A_functor); } diff --git a/sigc++/functors/macros/mem_fun.h.m4 b/sigc++/functors/macros/mem_fun.h.m4 index 46de6ea..ede3215 100644 --- a/sigc++/functors/macros/mem_fun.h.m4 +++ b/sigc++/functors/macros/mem_fun.h.m4 @@ -33,7 +33,7 @@ template<class T_return, class T_obj, class... T_arg> using [$1]mem_functor = mem_functor_base< T_return (T_obj::*)(T_arg...) $2, - T_return, T_obj, T_arg...>; + T_obj, T_arg...>; ]) define([BOUND_MEMBER_FUNCTOR],[dnl @@ -67,7 +67,7 @@ inline decltype(auto) mem_fun(T_return (T_obj::*_A_func)(T_arg...) $3) { return mem_functor_base< T_return (T_obj::*)(T_arg...) $3, - T_return, T_obj, T_arg...>(_A_func); } + T_obj, T_arg...>(_A_func); } ]) define([BOUND_MEM_FUN],[dnl @@ -168,12 +168,12 @@ namespace sigc { * @ingroup sigcfunctors */ -template <class T_func, class T_return, class T_obj, class... T_arg> +template <class T_func, class T_obj, class... T_arg> class mem_functor_base : public functor_base { public: using function_type = T_func; - using result_type = T_return; + using result_type = std::result_of_t<T_func(T_obj*, T_arg...)>; using obj_type_with_modifier = typename std::conditional_t< member_method_is_const<T_func>::value, const T_obj, T_obj>; @@ -217,9 +217,9 @@ MEMBER_FUNCTOR([const_],[const]) template <class T_func, class T_return, class T_obj, class... T_arg> class bound_mem_functor_base -: mem_functor_base<T_func, T_return, T_obj, T_arg...> +: mem_functor_base<T_func, T_obj, T_arg...> { - using base_type = mem_functor_base<T_func, T_return, T_obj, T_arg...>; + using base_type = mem_functor_base<T_func, T_obj, T_arg...>; public: using function_type = typename base_type::function_type; using result_type = typename base_type::result_type; |