1#ifndef MSTL_CORE_FUNCTIONAL_CALL_WRAPPER_HPP__
2#define MSTL_CORE_FUNCTIONAL_CALL_WRAPPER_HPP__
28template <
typename... Types>
31 template <
typename Tuple>
34 template <
typename Func,
typename... Args>
35 struct result_t<
_MSTL tuple<Func, Args...>>
36 :
_INNER __invoke_result_aux<Func, Args...> {};
38 using Tuple =
_MSTL tuple<decay_t<Types>...>;
50 template <
size_t... Index>
63 template <
typename... Args>
75 return this->__invoke(Indices());
79#ifdef MSTL_SUPPORT_DEDUCTION_GUIDES__
80template <
typename... Types>
MSTL_NODISCARD constexpr T && forward(remove_reference_t< T > &x) noexcept
完美转发左值
MSTL_ALWAYS_INLINE enable_if_t< is_void_v< T >, future_result_t< T > > get(future< T > &f)
通用future结果获取函数
typename build_index_tuple< Num >::type build_index_tuple_t
build_index_tuple的便捷别名
MSTL_CONSTEXPR14 _INNER __invoke_result_aux< Callable, Args... >::type invoke(Callable &&f, Args &&... args) noexcept(is_nothrow_invocable< Callable, Args... >::value)
统一调用接口
#define _MSTL
全局命名空间MSTL前缀
#define _INNER
inner命名空间前缀
#define MSTL_END_NAMESPACE__
结束全局命名空间MSTL
#define MSTL_BEGIN_NAMESPACE__
开始全局命名空间MSTL
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result)
移动范围元素
result_t< Tuple >::type operator()()
函数调用运算符
call_wrapper(Args &&... args)
构造函数