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"到字符串a
、b
和c
?
来自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
.
这意味着初始化列表中的对象由值存储。所以回答你的问题,是的,会制作副本。
我正在实施一组侵入式容器,试图尽可能成为标准库。我正在考虑是否应该支持 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"到字符串a
、b
和c
?
来自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 typeconst T
.
这意味着初始化列表中的对象由值存储。所以回答你的问题,是的,会制作副本。