4
我想編譯一些相當簡單的C++代碼與GCC 6,但得到縮小轉換警告。這是有問題的,因爲我們將警告視爲錯誤。gcc縮小轉換+運算符
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的上傳?這裏有什麼好的解決方案嗎?
http://en.cppreference.com/w/cpp/language/implicit_conversion –