我实现了一系列侵入式容器,试图尽可能地成为标准库。我考虑是否应该支持std::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
对象是否从初始化列表传递实际副本或&#34;引用&#34;字符串a
,b
和c
?
答案 0 :(得分:4)
来自this std::initializer_list
reference:
std::initializer_list<T>
类型的对象是一个轻量级代理对象,它提供对const T
类型对象数组的访问。
这意味着初始化列表中的对象由 value 存储。所以为了回答你的问题,我们会复制一份。