std::initializer_list 的语义

Semantics of std::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

从初始化列表传递的对象是实际副本还是"references"到字符串abc

来自this std::initializer_list reference

An object of type std::initializer_list<T> is a lightweight proxy object that provides access to an array of objects of type const T.

这意味着初始化列表中的对象由存储。所以回答你的问题,是的,会制作副本。