dal*_*ngh 5 c++ c++11 list-initialization type-narrowing
我在 cpp 参考网站上读到了有关缩小转换的内容。我有点理解它,但我不明白的是为什么错误只出现在第一行。
long double ld = 3.1415926536;
int a{ld}, b = {ld}; // error: narrowing conversion required
int c(ld), d = ld; // ok: but value will be truncated
Run Code Online (Sandbox Code Playgroud)
为什么错误只出现在第一行而不是第二行?
因为编译器需要发出诊断(在您的情况下为错误),以仅针对列表初始化(又名统一初始化)进行缩小,从 C++11 开始引入。对于没有大括号的 C++11 之前的初始化,不需要进行诊断。
有关更多详细信息,请参阅cppreference.com文档。
另请参阅此答案,了解为什么编译器只需要发出警告,而不一定发出错误。
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |