ant*_*_rh 23 c++ stl c++-standard-library language-lawyer
问题是关于自我分配。例如,将向量复制到自身中:
std::vector<std::string> vec(5, "hello");
vec = vec;
Run Code Online (Sandbox Code Playgroud)
上面的代码应该对字符串执行5个字符串赋值操作,还是什么都不做?我的意思是以下检查是否有效:
std::vector operator=(const std::vector &rhs)
{
if (this == &rhs)
{ return *this; }
...
}
Run Code Online (Sandbox Code Playgroud)
我正在研究自己的std::variant类实现(只是为了好玩),并且对我是否应该在自赋值运算符的开头添加自赋值检查感兴趣,还是应该将包含的元素复制到自身中?
我了解这通常并不重要。您不应创建利用复制事实的类。但是我很感兴趣该标准是否对此有所说明。
eer*_*ika 18
标准指定的容器分配的前后条件(引用最新草案):
[tab:container.req]
Run Code Online (Sandbox Code Playgroud)r = a确保:r == a。
这允许但不要求进行自我分配检查。
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |