Пример
int main()
{
const int i = 1.0; // Notice I am assigning a double to an int here
char a[i];
}
Вопрос
Компиляция кода выше с помощью g++ -O0 - Wall -pedantic -ansi -std=c++11
не выдает ошибок (за исключением неиспользуемой переменной). Однако, если я удалю -std=c++11
, я получу следующее предупреждение:
предупреждение: ISO C++ запрещает массив переменной длины
Согласно этому вопросу SO , я считаю, что в C++03 код недействителен. Однако может ли кто-нибудь объяснить, как правило изменилось в С++ 11?
(Этот вопрос был результатом предыдущего вопроса, на который я ответил.)