CWG2892 [expr.arith.conv] Floating-point promotion rules are unclear (original) (raw)

Full name of submitter: Lauri Vasama

Reference (section label): [expr.arith.conv]

Issue description:

Otherwise, if either operand is of floating-point type, the following rules are applied:

No conversion is needed, but is it permitted? Is an implementation allowed to define the result of float + float as double?
That does not seem like it is the intent, at least for standard floating-point types. What about extended floating-point types?
Supposing that half is a narrower than float floating-point type such as an 8 or 16 bit float, half + half resulting in float may be quite reasonable on some architectures.

Suggested resolution:

Assuming that no such conversions should be permitted for any floating-point types: