alf*_*lfC 4 c++ lifetime initializer-list const-reference c++11
我的印象是,它的std::initializer_list行为可能类似于 C++ 中的文字字符串,甚至进一步,它们可能会延长 const 引用的生命周期。这是正确的评估吗?
initializer_list稍后可以在本地范围内以某种方式引用an 中的对象(无需复制它们)吗?在全球范围内?
例如,这个测试在 GCC 和 clang 中通过。这只是偶然吗?
#include<cassert>
#include<initializer_list>
struct A{
double const* p;
A(std::initializer_list<double> il){ p = &*(il.begin() + 1); };
};
double f(){return 5.;}
int main(){
A a1{1.,2.,3.};
assert( *a1.p == 2. );
A a2{1., f(), f()};
assert( *a2.p == 5. );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |