std::experimental::ranges::invoke_C++中文网

以参数 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

参数

参阅