https://stackoverflow.com/questions/70700799/nested-global-static-stdinitializer-list?noredirect=1#comment124987583_70700799
Время жизни этого объекта - static std::initializer_list<A> aaa = .. (Статическая локальная переменная в функции) - от первого входа в функцию до конца работы программы.
Нет, так не получится, lifetime не дальше конструктора. Это не строковые литералы. Как вариант сложить отдельно в виде std array и использовать span.
Почему lifetime не дальше конструктора?? Стандард говорит, что продлевается так, если появляется референс. Lifetime на первом уровне работает как надо. А вот с вложенными проблема
Это lifetime для массива, а вот lifetime тех init-list которые использовались для инициализации элементов массива увы истёк.
Обсуждают сегодня