如何避免在模板代码中出现““无符号int零无意义比较”的警告?

问题描述 投票:0回答:1

正如我们know一样,将无符号值与“大于等于”的值比较为0是毫无意义的,因为这始终是正确的。但是,通常会将无符号值与模板参数进行比较,例如if (size() >= FixedValue) ...给hs编译器警告

“无符号int与零的无意义比较”

除了专门研究FixedValue = 0之外,如何避免该警告?我不想将其转换为一个有符号的值,以免弄乱超过有符号积分限制的值。

c++ templates compiler-warnings
1个回答
0
投票

看似愚蠢,但你可以写

if ((size() > FixedValue) or (size() == FixedValue))

因为这两种情况都不是无关紧要的。但是,请仔细检查您是否确实需要比较,而编译器并没有警告您。

如果size()的结果需要花费一些精力进行计算,请在进行比较之前将其存储在某个位置。

© www.soinside.com 2019 - 2024. All rights reserved.