G ++ 4.5错误:无法诊断缩小初始化列表

Sau*_*nda 6 c++ g++ narrowing c++11

我尝试了以下代码:

int main()
{
   int x {23.22};
}
Run Code Online (Sandbox Code Playgroud)

其中包括需要缩小的初始化,但代码编译正常,没有任何错误或警告.另一方面,以下代码给出错误:

int main()
{
   int x[]{23.22};
}
Run Code Online (Sandbox Code Playgroud)

我发现了一个bug还是什么?

PS:我目前正在使用GCC 4.5.0

dir*_*tly 7

看起来像个bug.以下内容直接来自n3092草案:

8.5.4列表初始化

- 否则,如果初始化列表具有单个元素,则从该元素初始化该对象; 如果需要缩小转换(见下文)将元素转换为T,则程序格式不正确.

int x1 {2}; // OK
int x2 {2.0}; // error: narrowing
Run Code Online (Sandbox Code Playgroud)

您可以在这里查看GCC的C++ 0X合规性.初始化列表(N2672)的状态为"是" - 但请注意,这仅仅是实验性的(因此您可能会遇到错误).

错误报告更新:GCC会发出带有-Wconversion标志的警告(并且不会覆盖此标志-Wall).

  • @OP:你有没有提交过bug?:-)这是我发现的:http://gcc.gnu.org/bugzilla/show_bug.cgi?id = 45378(其余的) (2认同)