在使用{}初始化列表和C ++中的原始类型时,我看到两个不同的结果。
我只有在发出警告 缩小{}内d从double到int的转换时才能逃脱
但是,如果我更明确地说明它,而不是警告,我会得到一个错误 在{}内将'3.0e + 0'从'double'转换为'int'的转换变窄了 如果使用{},在这两种情况下C ++ 11都不能阻止任何缩小转换吗?那为什么只在一种情况下发生呢? 我正在使用MingGW使用C / C ++的最新版本的Eclipse。 C ++ 14是否有可能无意间出现了问题?double d {3.0};
int integer {d};
int integer {3.0};
答案 0 :(得分:1)
使用gcc变体时,您需要指定-Werror=narrowing
使其变为错误而不是警告。 clang和vc ++更严格,默认情况下会发出错误。