1
以下工作:C++ 11:是否有可能從函數返回一個std :: initializer_list?
struct A {
int i;
int v;
};
std::initializer_list<A> getList() {
return {A{0,1}, A{2,3}};
}
int main() {
auto list = getList();
}
我可以驗證列表的內容是正確的。
不過,如果我更改成員v到一個載體,這是行不通的:
struct A {
int i;
std::vector<int> v;
};
std::initializer_list<A> getList() {
return {A{0,{1,2}}, A{3,{4,5}}};
}
在這種情況下,返回的列表包含垃圾值。
我知道標準說複製initializer_list時不會複製下層對象。這是發生在這裏嗎?
爲什麼它在第一個例子中工作?運氣好嗎?當列表中的對象包含一個向量時,是否有特殊情況?