相关疑难解决方法(0)

C++标准是否指定在某些情况下编译失败并出现错误?

我正在检查缩小转换的标准,我认为对于缩小转换,应该触发错误.因为标准说:

[注意:如上所述,列表初始化中的顶层不允许进行此类转换. - 结束说明]

我认为"不允许"的描述意味着编译应该失败.

但有人告诉我,这里只是说"程序格式不正确",标准不要求编译必须失败.

如果需要缩小转换(见下文)将元素转换为T,则程序格式不正确.

所以我的问题是:标准是否指定是否应该生成错误或警告?或者在某些情况下编译应该失败?从编译器的角度来看,编译程序是否可以,只是给出一些警告?

BTW:Clang 4.0.0Gcc 7.0.0表现不同.

float a {1.e39}; // Error for both Clang and GCC
double d;
float a3{d};     // Error for Clang, warning for GCC
Run Code Online (Sandbox Code Playgroud)

c++ iso type-conversion language-lawyer

25
推荐指数
3
解决办法
1382
查看次数

标签 统计

c++ ×1

iso ×1

language-lawyer ×1

type-conversion ×1