相关疑难解决方法(0)

为什么容器移动赋值运算符不会超出?

我注意到std::string(真的std::basic_string是)移动赋值运算符是 noexcept.这对我来说很有意义.但后来我发现,没有一个标准集装箱(例如std::vector,std::deque,std::list,std::map)宣布其移动赋值操作符noexcept.这对我来说没什么意义.std::vector例如,A 通常实现为三个指针,并且指针当然可以移动分配而不会抛出异常.然后我想也许问题是移动容器的分配器,但std::string也有分配器,所以如果这是问题,我希望它会影响std::string.

那么为什么std::string移动赋值运算符noexcept,但标准容器的移动赋值运算符不是?

c++ c++11

41
推荐指数
2
解决办法
3697
查看次数

标签 统计

c++ ×1

c++11 ×1