在std::initializer_list以列表中的元素复制到另一个容器主要用作类构造/功能参数.但是如何使用创建全局对象std::initializer_list呢?例如:
struct ElemType {
const char* name;
bool flag;
};
std::initializer_list<ElemType> MyGlobalData = { {"One",true}, {"Two",false} };
Run Code Online (Sandbox Code Playgroud)
如果要查看std::initializer_list模板定义(在Visual Studio 2017中检查),它只包含2个数据成员:const _Elem *_First和_Last.这意味着初始化列表数据应存储在自动变量中.在这种情况下它的寿命是多少?
在Visual Studio 2017中测试的此类示例看起来效果很好.但我怀疑这种行为是否符合最新的C++标准.