std::initializer_list
в основном используется в качестве аргумента конструкторов / функций класса для копирования элементов списка в другой контейнер.Но как насчет создания глобального объекта с использованием std::initializer_list
?Например:
struct ElemType {
const char* name;
bool flag;
};
std::initializer_list<ElemType> MyGlobalData = { {"One",true}, {"Two",false} };
Если посмотреть на определение шаблона std::initializer_list
(проверено в Visual Studio 2017), оно содержит только 2 элемента данных: const _Elem *_First
и _Last
.Это означает, что данные списка инициализатора должны храниться в автоматической переменной. Какой срок службы в этом случае?
Такой пример, протестированный в Visual Studio 2017, выглядит хорошо.Но я сомневаюсь, соответствует ли это поведение последнему стандарту C ++.