小编Pav*_*nov的帖子

警告C++隐式转换

我有这个C++代码:

#include <iostream>
#include <vector>
#include <numeric>

using namespace std;

int main() {
  vector<int64_t> vec = {4294967296, 4294967296, 4294967296};
  int64_t sum = accumulate(vec.begin(), vec.end(), 0, [](int64_t sum, int64_t val){
    return sum + val;
  });
  cout << "sum = " << sum << endl;
}
Run Code Online (Sandbox Code Playgroud)

它返回sum = 0是因为隐式转换intint64(参见函数的0第三个参数accumulate).更换0后的(int64_t)0一切工作正常.

但是我可以在编译时检测到这些东西吗?-Wconversion在这种情况下不起作用.

c++ implicit-conversion

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

标签 统计

c++ ×1

implicit-conversion ×1