У меня сложилось впечатление, что 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. );
}