标准库类型赋值运算符的引用限定符
ref-qualifiers for the assignment operator of standard library types
我想知道,标准类型的赋值运算符不是左值引用限定的原因吗? None 个是。
正因为如此,我们可以这样写:
std::string{} = "42";
std::string s = "hello " + std::string{"world"} = "oops!";
std::vector<int> v = { 1,2,3 };
std::move(v) = { 4,5,6 };
如果赋值运算符是左值引用限定的,所有这些示例都不会编译。
是不是因为要修改的东西很多(后来就noexcept了)没人写proposal for?我不认为人们会写这样的代码,但是库的设计不应该不允许它这样做吗?
您的建议是proposed in 2009, and ultimately rejected in Frankfurt that year over "concerns about backwards compatibility"。
这将是一个重大的改变,我们不喜欢那些。
现有的禁止分配给内置类型右值的禁令无论如何都只是有限的实际价值,因此可能破坏现有代码的成本是 。
如果我们从头开始,图书馆会以这种方式设计吗?也许。
我想知道,标准类型的赋值运算符不是左值引用限定的原因吗? None 个是。
正因为如此,我们可以这样写:
std::string{} = "42";
std::string s = "hello " + std::string{"world"} = "oops!";
std::vector<int> v = { 1,2,3 };
std::move(v) = { 4,5,6 };
如果赋值运算符是左值引用限定的,所有这些示例都不会编译。
是不是因为要修改的东西很多(后来就noexcept了)没人写proposal for?我不认为人们会写这样的代码,但是库的设计不应该不允许它这样做吗?
您的建议是proposed in 2009, and ultimately rejected in Frankfurt that year over "concerns about backwards compatibility"。
这将是一个重大的改变,我们不喜欢那些。
现有的禁止分配给内置类型右值的禁令无论如何都只是有限的实际价值,因此可能破坏现有代码的成本是
如果我们从头开始,图书馆会以这种方式设计吗?也许。