在 c++ Primer(5th) 中,它提到:
当与内置类型的变量一起使用时,这种形式的初始化有一个 重要的属性:如果初始化器可能导致信息丢失,编译器不会让我们列出内置类型的初始化变量:
longdouble ld = 3.1415926536;
int a{ld}, b = {ld}; // error: narrowing conversion required
int c(ld), d = ld; // ok: but value will be truncate
我使用 gcc4.8.1 编译代码,它只给出警告而不是错误。
g++ -W -Wall -Wextra -pedantic -std=c++0x -o m main.cpp
main.cpp: In function ‘int main()’:
main.cpp:64:13: warning: narrowing conversion of ‘ld’ from ‘long double’ to ‘int’ inside { } [-Wnarrowing]
int a{ld}, b= {ld};
^
main.cpp:64:22: warning: narrowing conversion of ‘ld’ from ‘long double’ to ‘int’ inside { } [-Wnarrowing]
int a{ld}, b= {ld};
是否有任何标志可以打开重要属性的功能?