C++ std::initializer\u列表的语义

C++ std::initializer\u列表的语义,c++,c++11,initializer-list,C++,C++11,Initializer List,我正在实现一个入侵容器集合,试图尽可能成为标准库。我正在考虑是否应该支持,但我不太理解它的语义 基本上,如果我有这个代码: std::string a = "a"; std::string b = "b"; std::string c = "c"; std::initializer_list<std::string> list = { a, b, c }; // pass list to a container or whatever std::string a=“a”; st

我正在实现一个入侵容器集合,试图尽可能成为标准库。我正在考虑是否应该支持,但我不太理解它的语义

基本上,如果我有这个代码:

std::string a = "a";
std::string b = "b";
std::string c = "c";

std::initializer_list<std::string> list = { a, b, c };

// pass list to a container or whatever
std::string a=“a”;
std::string b=“b”;
std::string c=“c”;
std::initializer_list={a,b,c};
//将列表传递给容器或任何东西
从初始值设定项列表传递的对象是否为字符串
a
b
c
的实际副本或“引用”?

来自:

std::initializer\u list
类型的对象是一个轻量级代理对象,它提供对
const T
类型的对象数组的访问


这意味着初始值设定项列表中的对象是按值存储的。因此,为了回答您的问题,我们将制作副本。

@LightnessRacesinOrbit好吧,那是一次很好的失败,有火焰和烟雾等等。这是我第二次弄错了。我讨厌初始值设定项列表:@LightnessRacesinOrbit新西兰俚语,意为酷、甜、谢谢等。