Por que `std :: initializer_list` não é definido como um tipo literal?
Este é um acompanhamento desta pergunta:É legal declarar um objeto constexpr initializer_list?.
Desde o C ++ 14, ostd::initializer_list
classe tem todos os seus métodos marcados comconstexpr
. Parece natural poder inicializar uma instância fazendoconstexpr std::initializer_list<int> list = {1, 2, 3};
mas Clang 3.5 reclama sobrelist
não sendo inicializado por uma expressão constante.Como dyp apontou em um comentário, qualquer requisito parastd::initializer_list
ser um tipo literal parece ter desaparecido das especificações.
Qual é o sentido de ter uma classe totalmente definida como constexpr se não podemos inicializá-la como tal? É uma supervisão no padrão e será corrigida no futuro?