第一部分 :
std::initializer_list是 C++11 的一个非常有用的特性,所以我想知道它是如何在标准库中实现的。从我在这里读到的内容,编译器创建了一个类型数组T并将指针指向initializer_list<T>.
它还指出,复制一个initializer_list将创建一个引用相同数据的新对象:为什么会这样?我会猜到它要么:
- 复制新的数据
initializer_list - 将数据的所有权转移到新的
initializer_list
第二部分 :
来自构造函数的众多在线参考资料之一std::vector:
vector (initializer_list<value_type> il,
const allocator_type& alloc = allocator_type());
(6) 初始化列表构造函数
以相同的顺序构造一个容器,其中包含il中每个元素的副本。
我对移动语义还不满意,但是不能将数据il移动到vector? 我不知道std::vectorIIRC 的深度实现,但它使用普通的旧数组。