- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
lst2 = lst
Copying or assigning an initializer_list does not copy the elements in the list. After the copy, the original and the copy share the elements.
根据C++ Primer Table 6.1,assign one initializer list会共享数据,但是如果initializer list与另一个out-scoped共享怎么办,例如,下面的代码是函数的一部分
std::initializer_list<int> lst1;
{
std::initializer_list<int> lst2 = {1, 2, 3};
lst1 = lst2;
}
似乎初始化列表可能共享文字的数据,但标准中指定的数组文字的生命周期是多少?这段代码安全吗?
最佳答案
此代码似乎无效。这是来自 cppreference 的一些相关摘录
The underlying array is a temporary array of type const T[N], in whicheach element is copy-initialized (except that narrowing conversionsare invalid) from the corresponding element of the originalinitializer list. The lifetime of the underlying array is the same asany other temporary object, except that initializing aninitializer_list object from the array extends the lifetime of thearray exactly like binding a reference to a temporary (with the sameexceptions, such as for initializing a non-static class member).
退出内部作用域后,临时底层数组将被销毁 - 随着内部 lst2
的生命周期结束 - 而封闭作用域中的 lst1
将以悬空指针。
关于c++ - 与初始化列表共享数据是否在标准范围内有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68272403/
我是一名优秀的程序员,十分优秀!