std :: initializer_list的语义

时间:2015-08-18 08:56:54

标签: c++ c++11 initializer-list

我实现了一系列侵入式容器,试图尽可能地成为标准库。我考虑是否应该支持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;字符串abc

1 个答案:

答案 0 :(得分:4)

来自this std::initializer_list reference

  

std::initializer_list<T>类型的对象是一个轻量级代理对象,它提供对const T类型对象数组的访问。

这意味着初始化列表中的对象由 value 存储。所以为了回答你的问题,我们会复制一份。