小编Red*_*oft的帖子

std :: initializer列表全局/静态对象的生命周期

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++标准.

c++ lifetime language-lawyer

4
推荐指数
1
解决办法
203
查看次数

标签 统计

c++ ×1

language-lawyer ×1

lifetime ×1