在回答这个问题时:使用双花括号初始化vector<string>,展示了以下内容:
vector<string> v = {{"a", "b"}};
将使用一个仅包含一个元素的初始化列表
来调用std::vector
构造函数,因此向量中的第一个(也是唯一的)元素将从{"a","b"}
构造。这会导致未定义的行为,但这已经不是重点。
我发现的是:
std::vector<int> v = {{2, 3}};
将使用包含两个元素的initializer_list
调用std::vector
构造函数。
为什么会出现这种行为差异呢?