C ++ 11: сужение

Я прочитал нижеследующий абзац в PDF: http://www.stroustrup.com/what-is-2009.pdf

уменьшение

Может быть, вы заметили, что я использовал инициализацию {} последовательно. Может быть, вы также подумали, что я убираю код и меня переполняет новая функция? Это, конечно, происходит, но я не думаю, что это так. Рассматривать:

int x1 = 64000;

int x2 { 64000 };

Мы можем провести приятную дружескую дискуссию об эстетике этих двух определений, и вы можете даже указать, что для версии {} требуется еще одно нажатие клавиши, чем = one. Однако между этими двумя формами есть одно существенное различие, которое заставляет меня выбрать {}. Версия {} не допускает сужения, и я не смог вам сказать, что два определения были написаны для машины с 16-битными целыми числами. Это означает, что значение x1 может быть очень удивительным, тогда как определение x2 вызывает ошибку во время компиляции.

Но когда я попытался скомпилировать следующее с помощью онлайнового компилятора c ++ 11 ‘Ideone.com’, он показал успех

#include <iostream>

using namespace std;

int main() {
// your code goes here
short i {999999};
std::cout<<"value of i = " << i;
return 0;
}

Я ожидал ошибки компиляции. Любая помощь будет оценена.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]