【发布时间】:2017-06-29 18:55:11
【问题描述】:
我正在尝试使用 GCC 6 编译一些相当简单的 C++ 代码,但收到了缩小转换警告。这是有问题的,因为我们将警告视为错误。
struct S {
short int a;
short int b;
};
short int getFoo();
short int getBar();
std::array<S, 2> arr = {{
{5, getFoo()},
{3, getFoo() + getBar()} // Narrowing conversion here?
}};
您可以在https://godbolt.org/g/wHNxoc 看到此代码的运行情况。 GCC 说 getFoo() + getBar() 从 int 缩小到 short int。是什么导致向上转换为 int?除了强制转换为 short int 之外,这里有什么好的解决方案吗?
【问题讨论】: