Это продолжение этого вопроса: Является ли законным объявление объекта constexpr initializer_list?.
Так как С++ 14, класс std::initializer_list
имеет все свои методы, помеченные constexpr
. Кажется естественным, чтобы иметь возможность инициализировать экземпляр, выполняя
constexpr std::initializer_list<int> list = {1, 2, 3};
но Clang 3.5 жалуется, что list
не инициализируется постоянным выражением.
Как указывал dyp в комментарии, любое требование для std::initializer_list
быть буквальным типом, похоже, исчезло из спецификаций.
Какой смысл иметь класс, полностью определенный как constexpr, если мы даже не можем его инициализировать как таковой? Является ли это надзором в стандарте и будет зафиксирован в будущем?