"auto" 在 C++17 中不会出现整数溢出吗?

Is "auto" safe from the integer overflow in C++17?

如果我这样写代码:

auto n = 2048 * 2048 * 5;
char* buf = new char[n];

那么,auto 推导类型在 C++17 中的整数溢出是否安全?

C++中的

20485有一个类型,那个类型就是int。两个 int 相乘有一个类型,那个类型是 int。有些值的结果不适合 intauto 无法阻止这种情况。

auto 可以防止意外缩小结果范围,例如:

short x = 4 * 8192;