Инициализация константы int литералом с плавающей запятой

Пример

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?

(Этот вопрос был результатом предыдущего вопроса, на который я ответил.)

8
задан Community 23 May 2017 в 10:09
поделиться