【发布时间】:2019-03-31 03:49:58
【问题描述】:
我想知道,标准类型的赋值运算符不是左值引用限定的原因吗?它们都不是。
正因为如此,我们可以这样写:
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)而没有人为它写提案?我认为人们不会编写这样的代码,但库不应该被设计成甚至不允许这样做吗?
【问题讨论】:
标签: c++ stl assignment-operator c++-standard-library ref-qualifier