【发布时间】:2017-11-16 17:46:49
【问题描述】:
特别是,算术运算符不接受小于 int 的类型作为参数,并且在左值到右值转换后会自动应用整数提升(如果适用)。
当a 和b 都是short 时,所有主要编译器(g++、clang 和 msvc)say 即 decltype(a+b) 是 int。
但是,标准说:
Integral promotions [conv.prom]/1
除bool、char16_t、char32_t或wchar_t以外的整数类型的纯右值,其整数转换秩小于int的秩可以转换为int[。 ..].Usual arithmetic conversions [expr.arith.conv]/1.5.1
-- 如果两个操作数的类型相同,则不需要进一步转换。
我只能看到“可以转换”,我找不到需要对算术运算符进行整数提升的地方。
这里的 cppreference 错了吗?
【问题讨论】:
标签: c++ language-lawyer