gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:55:43 26 4
gpt4 key购买 nike

我正在检查有关缩小转换的标准,我认为对于缩小转换应该触发一个错误。因为standard说:

[ Note: As indicated above, such conversions are not allowed at the top level in list-initializations. — end note ]

我认为“不允许”的描述意味着编译应该失败。

但是有人告诉我here只是说“程序格式错误”,标准不会要求编译必须失败。

if a narrowing conversion (see below) is required to convert the element to T, the program is ill-formed.

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

顺便说一句: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

最佳答案

标准不使用术语“错误”和“警告”,它只讨论编译器必须“发出诊断”的情况。

在您的示例中,如果程序“格式错误”,编译器需要以某种方式告诉您 - 发出诊断。

之后,它可以做任何它喜欢的事情——包括编译和运行程序。该标准仅指定符合代码的情况,其他所有内容均未定义。然后,正如我们所知,任何事情都可能发生。

关于c++ - C++ 标准是否指定在某些情况下编译应该失败并出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40807404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com