我遇到了一个相当奇怪的警告,由clang-tidy 12.0.1报告。在下面的代码中:
#include <vector>
int main()
{
std::vector<int> v1;
const auto a = v1.begin() + v1.size();
return 0;
}
我看到这个警告被触发:
error: narrowing conversion from 'std::vector<int>::size_type' (aka 'unsigned long long') to signed type 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>::difference_type' (aka 'long long') is implementation-defined [bugprone-narrowing-conversions,cppcoreguidelines-narrowing-conversions,-warnings-as-errors]
const auto a = v1.begin() + v1.size();
^
据我理解,当操作两个大小相同但符号不同的整数时,有符号整数会被转换为无符号整数,而不是反过来。我是否有所遗漏?