C++11 可以在Visual Studio 2013中将(非常量)l值引用绑定到r值
声明不能将非常量l值引用绑定到r值。这是一个示例代码C++11 可以在Visual Studio 2013中将(非常量)l值引用绑定到r值,c++11,visual-studio-2013,rvalue-reference,C++11,Visual Studio 2013,Rvalue Reference,声明不能将非常量l值引用绑定到r值。这是一个示例代码 #include <iostream> using namespace std; struct Position2D { float m_x; float m_y; Position2D(float x, float y) : m_x(x), m_y(y) { } }; int main() { Position2D& p2 = Position2D(2, 2); /
#include <iostream>
using namespace std;
struct Position2D
{
float m_x;
float m_y;
Position2D(float x, float y) : m_x(x), m_y(y)
{
}
};
int main()
{
Position2D& p2 = Position2D(2, 2); // this is the line which has the problem.
Position2D&& p3 = Position2D(2, 2);
return 0;
}
#包括
使用名称空间std;
结构位置2D
{
浮动m_x;
浮动货币;
位置2D(浮动x,浮动y):m_x(x),m_y(y)
{
}
};
int main()
{
Position2D&p2=Position2D(2,2);//这是有问题的行。
位置2D和p3=位置2D(2,2);
返回0;
}
问题是Visual Studio 2013编译器编译上述代码段时没有任何错误。但显示了一个错误,如所述。谁是对的?Visual Studio 2013 C++编译器使用新的C++11标准时是否存在任何问题?MSVC长期存在一个错误特性,允许将临时值绑定到非常量引用,这违反了标准。您可以使用
/Za
选项禁用它。@IgorTandetnik谢谢。现在我得到了预期的编译错误