【问题标题】:C++ How does an std::reference_wrapper implicitly convert to reference?C++ std::reference_wrapper 如何隐式转换为引用?
【发布时间】:2012-11-01 04:49:57
【问题描述】:

我最近开始使用std::reference_wrapper 类。在替换原始引用的某些用途时,我注意到我不必使用get() 函数将reference_wrappers 作为参数传递给采用普通引用的函数。

void foo(const T& a);
//...
T obj;
std::reference_wrapper<const T> ref(obj);
foo(ref);  //works!
//foo(ref.get()); also works, but I expected that it would be required

std::reference_wrapper 在传递给函数时如何隐式转换为原始引用?

【问题讨论】:

    标签: c++ reference c++11 implicit-conversion reference-wrapper


    【解决方案1】:

    reference_wrapper 包括 (§20.8.3):

    // access
    operator T& () const noexcept;
    

    这是一个转换运算符,由于它没有指定为explicit,它允许从reference_wrapper&lt;T&gt;T&amp; 的隐式转换。

    【讨论】:

      【解决方案2】:

      它重载了这个转换运算符:

      operator T& () const;
      

      http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper/get

      【讨论】:

        猜你喜欢
        • 2016-03-31
        • 2020-07-25
        • 1970-01-01
        • 2018-01-23
        • 1970-01-01
        • 1970-01-01
        • 2012-12-02
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多