我的印象是std::initializer_list
的行为可能类似于C ++中的文字字符串,甚至更进一步,它们可能会延长const引用的寿命。那是正确的评估吗?
以后可以在本地范围内以某种方式引用 initializer_list
中的对象吗(不复制它们)?在全球范围内?
例如,此测试在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. );
}
答案 0 :(得分:4)