MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
可调用函数

可调用函数系列函数的实现 更多...

函数

template<typename Callable, typename... Args>
MSTL_CONSTEXPR14 _INNER __invoke_result_aux< Callable, Args... >::type invoke (Callable &&f, Args &&... args) noexcept(is_nothrow_invocable< Callable, Args... >::value)
 统一调用接口
template<typename Res, typename Callable, typename... Args>
MSTL_CONSTEXPR14 enable_if_t< is_invocable_r< Res, Callable, Args... >::value, Res > invoke_r (Callable &&f, Args &&... args) noexcept(is_nothrow_invocable< Callable, Args... >::value)
 带返回类型检查的统一调用接口

详细描述

可调用函数系列函数的实现

函数说明

◆ invoke()

template<typename Callable, typename... Args>
MSTL_CONSTEXPR14 _INNER __invoke_result_aux< Callable, Args... >::type invoke ( Callable && f,
Args &&... args )
noexcept

统一调用接口

模板参数
Callable可调用对象类型
Args参数类型
参数
f可调用对象
args调用参数
返回
调用结果

统一调用接口,支持以下所有调用形式:

  1. 普通函数调用:f(args...)
  2. 成员函数调用:(obj.*f)(args...) 或 (ptr->*f)(args...)
  3. 成员对象访问:obj.*f 或 ptr->*f
  4. 函数对象调用

在文件 invoke.hpp559 行定义.

引用了 _INNER, _MSTL , 以及 forward().

被这些函数引用 once_flag::call_once , 以及 reference_wrapper< T >::operator()().

◆ invoke_r()

template<typename Res, typename Callable, typename... Args>
MSTL_CONSTEXPR14 enable_if_t< is_invocable_r< Res, Callable, Args... >::value, Res > invoke_r ( Callable && f,
Args &&... args )
noexcept

带返回类型检查的统一调用接口

模板参数
Res期望的返回类型
Callable可调用对象类型
Args参数类型
参数
f可调用对象
args调用参数
返回
调用结果,转换为Res类型

与invoke类似,但额外检查返回类型是否可以转换为Res。

在文件 invoke.hpp603 行定义.

引用了 _INNER, _MSTL , 以及 forward().