小编Die*_*ter的帖子

无法消除警告 C4554

在Visual Studio 2015中编译时,此代码始终会产生 C4554 警告。但是,g++(在 Coliru 上)编译它时不会发出警告。警告消息是:

警告 C4554:“<<”:检查运算符优先级是否存在可能的错误;使用括号来阐明优先级

据此运算符-优先于运算符<<。所以甚至不需要括号。(省略它们会产生相同的警告。)有人可以告诉我此警告的原因,或者如何消除它吗?

#include <array>

template<int C>
void F(std::array<int, 2 << (C-1)> const&) // 2 << (2-1) = 4
{
}

int main()
{
    std::array<int,4> arr;
    F<2>(arr);
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ c++11 visual-studio-2015

5
推荐指数
1
解决办法
1728
查看次数

标签 统计

c++ ×1

c++11 ×1

visual-c++ ×1

visual-studio-2015 ×1