std::experimental::ranges::invoke
来自cppreference.com
| |
(范围 TS) | |
以参数 args 调用可调用对象 f,并返回结果,如同用 return INVOKE(std::forward<F>(f), std::forward<Args>(args)...);,其中 INVOKE(f, t1, t2, ..., tN) 定义如下:
- 若
f为类T的成员函数指针:
- 若
std::is_base_of<T, std::decay_t<decltype(t1)>>::value为true,则INVOKE(f, t1, t2, ..., tN)等价于(t1.*f)(t2, ..., tN) - 否则,
INVOKE(f, t1, t2, ..., tN)等价于((*t1).*f)(t2, ..., tN)。
- 若
- 否则,若 N == 1 且
f为类T的数据成员指针:
- 若
std::is_base_of<T, std::decay_t<decltype(t1)>>::value为true,则INVOKE(f, t1)等价于t1.*f。 - 否则,
INVOKE(f, t1)等价于(*t1).*f。
- 若
- 否则
INVOKE(f, t1, t2, ..., tN)等价于f(t1, t2, ..., tN)(即f是函数对象)。
参数
| f | - | 要调用的可调用对象 |
| args | - | 传递给 f 的实参
|
参阅
(C++17)(C++23) |
以给定实参和可能指定的返回类型(C++23 起)调用任意可调用 (Callable) 对象 (函数模板) |