gpt4 book ai didi

c++ - std::reference_wrapper 的实现

转载 作者:太空狗 更新时间:2023-10-29 21:15:30 25 4
gpt4 key购买 nike

同时查看 std::reference_wrapper 的实现 here

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

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

operator() 提供有用的示例会很棒

最佳答案

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

  • 模板参数class ... Args是在可以传递给底层 Callable 的参数方面使其通用。
  • 运算符的返回类型必须是调用 Callable 产生的返回类型,它由 typename std::result_of<T&(ArgTypes&&...)>::type 获得。部分
  • 它使用 invoke call 作为调用 Callable 的通用方式,无论 Callable 是什么类型(Functor、函数指针、成员函数指针等),它都能正常工作。
  • 它使用 std::forward在传递参数列表中实现perfect forwarding - 因此,例如传递给原始调用的左值和右值在底层调用中保留其左值/右值。

关于c++ - std::reference_wrapper 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37567222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com