[英]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_wrapper
为std::reference_wrapper
operator()
提供有用的示例
这定义了operator()
成员函数,该函数适用于包含对Callable的引用的std::reference_wrapper
。 它的目的是调用底层的Callable。
class ... Args
是根据可传递给底层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.