Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用于参考的尾随返回类型_C++_C++11_Trailing Return Type - Fatal编程技术网

C++ 用于参考的尾随返回类型

C++ 用于参考的尾随返回类型,c++,c++11,trailing-return-type,C++,C++11,Trailing Return Type,考虑以下代码 #include <iostream> class A { public: using T = float; A(const T& x) { m_value = x; } T& value(); private: T m_value; }; // A::T& A::value() // { // return m_value; // } auto&

考虑以下代码

#include <iostream>

class A {

public:
    using T = float;
    A(const T& x)
    {
        m_value = x;
    }

    T& value();

private:
    T m_value;
};

// A::T& A::value()
//  {
//      return m_value;
//  }

auto& A::value() -> T &
{
    return m_value;
}

int main()
{
    A a(10.0);
    std::cout << a.value() << std::endl;

    return 0;
}
等效代码(注释函数)工作正常。
但是我想使用尾随返回类型。

如果您想使用尾随返回类型,除了在通常放置返回类型的位置使用
自动
说明符外,您不能使用任何其他内容:

auto  A::value()->T &
//  ^ no '&' here
{
    return m_value;
}

您在
->
之后指定的类型已经是一个引用,所以不用担心。

只需按照错误建议执行并编写
auto a::value()->T&
auto  A::value()->T &
//  ^ no '&' here
{
    return m_value;
}