C++ C++;11:缩小

C++ C++;11:缩小,c++,c++11,narrowing,list-initialization,C++,C++11,Narrowing,List Initialization,我在PDF中阅读了以下段落: 缩小 也许您注意到我一直使用{}初始化。也许,你也认为我是在丑化代码,被一个新奇的功能所迷惑?这种情况当然会发生,但我认为这里的情况并非如此。考虑: int x1 = 64000; int x2 { 64000 }; 我们可以就这两个定义的美学进行友好的讨论,您甚至可以指出,{}版本需要比=1多击一次键。然而,这两种形式之间有一个显著的区别,使我选择了{}。{}版本不允许缩小,我没有告诉您这两个定义是为具有16位整数的机器编写的。这意味着x1的值可能非常令人惊讶

我在PDF中阅读了以下段落:

缩小

也许您注意到我一直使用{}初始化。也许,你也认为我是在丑化代码,被一个新奇的功能所迷惑?这种情况当然会发生,但我认为这里的情况并非如此。考虑:

int x1 = 64000;

int x2 { 64000 };
我们可以就这两个定义的美学进行友好的讨论,您甚至可以指出,{}版本需要比=1多击一次键。然而,这两种形式之间有一个显著的区别,使我选择了{}。{}版本不允许缩小,我没有告诉您这两个定义是为具有16位整数的机器编写的。这意味着x1的值可能非常令人惊讶,而x2的定义会导致编译时错误

但当我尝试使用“Ideone.com”c++11在线编译器编译以下代码时,它显示了成功

#include <iostream>

using namespace std;

int main() {
  // your code goes here
  short i {999999};
  std::cout<<"value of i = " << i;
  return 0;
}
#包括
使用名称空间std;
int main(){
//你的密码在这里
短i{999999};

std::coutusing compiler在同一个站点上运行?使用g++4.7.2检查此警告。需要将警告设置为错误。类似的情况也可能发生在ideone中。?如果您想控制如何编译和使用哪种编译器,我认为更好的方法是在您的计算机上安装编译器。如果您不能,我刚刚发现;至少,它显示了您可以使用编译器选项及其输出。@vikramjitSingh最近的一个clang++3.5版本在coliru中提供: