std::experimental::ranges::invoke

来自cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
 
 
通用工具库
工具组件
函数对象
invoke
元编程与类型特性
有标签的 pair 与 tuple
                          
标签说明符
                                      
                          
 
template < class F, class... Args >
std::result_of_t<F&&(Args&&...)> invoke(F&& f, Args&&... args);
(范围 TS)

以参数 args 调用可调用 (Callable) 对象 f ,并返回结果,如同用 return INVOKE(std::forward<F>(f), std::forward<Args>(args)...); ,其中 INVOKE(f, t1, t2, ..., tN) 定义如下:

  • std::is_base_of<T, std::decay_t<decltype(t1)>>::valuetrue ,则 INVOKE(f, t1, t2, ..., tN) 等价于 (t1.*f)(t2, ..., tN)
  • 否则, INVOKE(f, t1, t2, ..., tN) 等价于 ((*t1).*f)(t2, ..., tN)
  • std::is_base_of<T, std::decay_t<decltype(t1)>>::valuetrue ,则 INVOKE(f, t1) 等价于 t1.*f
  • 否则, INVOKE(f, t1) 等价于 (*t1).*f

参数

f - 要调用的可调用 (Callable) 对象
args - 传递给 f 的参数

参阅

(C++17)(C++23)
以给定实参和可能指定的返回类型 (C++23 起)调用任意可调用 (Callable) 对象
(函数模板)