Usual arithmetic conversions

Many binary operators that expect operands of arithmetic or enumeration type cause conversions and yield result types in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the usual arithmetic conversions.

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
CWG 1642C++98usual arithmetic conversions might involve lvaluesapplies lvalue-to-rvalue conversions first
CWG 2528C++20the three-way comparison between unsigned charand unsigned int is ill-formed becauseof the intermediate integral promotion[1]determines the common type basedon the promoted types, withoutactually promoting the operands[2]
CWG 2892C++98when both operands are of the samefloating-point type, the meaning of “nofurther conversion is needed” was unclearchanged to “no furtherconversion will be performed”