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;
}