tuple<_Bound_args...> _M_bound_args;
// Call unqualified
- template<typename... _Args, int... _Indexes>
- typename result_of<
- _Functor(typename result_of<_Mu<_Bound_args>
- (_Bound_args&, tuple<_Args...>&&)>::type...)
- >::type
+ template<typename _Result, typename... _Args, int... _Indexes>
+ _Result
__call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>)
{
return _M_f(_Mu<_Bound_args>()
}
// Call as const
- template<typename... _Args, int... _Indexes>
- typename result_of<
- const _Functor(typename result_of<_Mu<_Bound_args>
- (const _Bound_args&, tuple<_Args...>&&)
- >::type...)>::type
+ template<typename _Result, typename... _Args, int... _Indexes>
+ _Result
__call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const
{
return _M_f(_Mu<_Bound_args>()
#if 0
// Call as volatile
- template<typename... _Args, int... _Indexes>
- typename result_of<
- volatile _Functor(typename result_of<_Mu<_Bound_args>
- (volatile _Bound_args&, tuple<_Args...>&&)
- >::type...)>::type
+ template<typename _Result, typename... _Args, int... _Indexes>
+ _Result
__call_v(tuple<_Args...>&& __args,
_Index_tuple<_Indexes...>) volatile
{
}
// Call as const volatile
- template<typename... _Args, int... _Indexes>
- typename result_of<
- const volatile _Functor(typename result_of<_Mu<_Bound_args>
- (const volatile _Bound_args&,
- tuple<_Args...>&&)
- >::type...)>::type
+ template<typename _Result, typename... _Args, int... _Indexes>
+ _Result
__call_c_v(tuple<_Args...>&& __args,
_Index_tuple<_Indexes...>) const volatile
{
_Result
operator()(_Args&&... __args)
{
- return this->__call(tuple<_Args...>(std::forward<_Args>(__args)...),
- _Bound_indexes());
+ return this->__call<_Result>(tuple<_Args...>
+ (std::forward<_Args>(__args)...),
+ _Bound_indexes());
}
// Call as const
_Result
operator()(_Args&&... __args) const
{
- return this->__call_c(tuple<_Args...>
- (std::forward<_Args>(__args)...),
- _Bound_indexes());
+ return this->__call_c<_Result>(tuple<_Args...>
+ (std::forward<_Args>(__args)...),
+ _Bound_indexes());
}
#if 0
_Result
operator()(_Args&&... __args) volatile
{
- return this->__call_v(tuple<_Args...>
- (std::forward<_Args>(__args)...),
- _Bound_indexes());
+ return this->__call_v<_Result>(tuple<_Args...>
+ (std::forward<_Args>(__args)...),
+ _Bound_indexes());
}
// Call as const volatile
_Result
operator()(_Args&&... __args) const volatile
{
- return this->__call_c_v(tuple<_Args...>
- (std::forward<_Args>(__args)...),
- _Bound_indexes());
+ return this->__call_c_v<_Result>(tuple<_Args...>
+ (std::forward<_Args>(__args)...),
+ _Bound_indexes());
}
#endif
};