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时不会复制下层对象。这是发生在这里吗?
为什么它在第一个例子中工作?运气好吗?当列表中的对象包含一个向量时,是否有特殊情况?