diff options
Diffstat (limited to 'libcxx/include/__functional_base')
-rw-r--r-- | libcxx/include/__functional_base | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libcxx/include/__functional_base b/libcxx/include/__functional_base index 6766793d7c8..e174e0ca003 100644 --- a/libcxx/include/__functional_base +++ b/libcxx/include/__functional_base @@ -419,6 +419,26 @@ struct __invoke_return typedef decltype(__invoke(_VSTD::declval<_Tp>(), _VSTD::declval<_Args>()...)) type; }; +template <class _Ret> +struct __invoke_void_return_wrapper +{ + template <class ..._Args> + static _Ret __call(_Args&&... __args) + { + return __invoke(_VSTD::forward<_Args>(__args)...); + } +}; + +template <> +struct __invoke_void_return_wrapper<void> +{ + template <class ..._Args> + static void __call(_Args&&... __args) + { + __invoke(_VSTD::forward<_Args>(__args)...); + } +}; + template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY reference_wrapper : public __weak_result_type<_Tp> |