繁体   English   中英

执行std :: reference_wrapper

[英]Implementation of std::reference_wrapper

同时在这里查看 std::reference_wrapper的实现

构造函数和运算符对我来说很明显,但我不理解这一部分

template< class... ArgTypes >
typename std::result_of<T&(ArgTypes&&...)>::type
  operator() ( ArgTypes&&... args ) const {
  return std::invoke(get(), std::forward<ArgTypes>(args)...);
}

有人可以为我简化它...将不胜感激

编辑:并且很std::reference_wrapperstd::reference_wrapper operator()提供有用的示例

这定义了operator()成员函数,该函数适用于包含对Callable的引用的std::reference_wrapper 它的目的是调用底层的Callable。

  • 模板参数class ... Args是根据可传递给底层Callable的参数使其成为通用的。
  • 运算符的返回类型必须是通过调用Callable生成的返回类型,它通过typename std::result_of<T&(ArgTypes&&...)>::type部分获得
  • 它使用invoke调用作为调用Callable的通用方法,无论Callable的类型是什么(Functor,函数指针,成员函数指针等),它都可以工作。
  • 它在传递参数列表时使用std::forward来实现完美转发 - 例如,传入原始调用的lvalue和rvalues在底层调用中保留它们的l / rvalue-ness。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM