Warum ist common_type nicht <long, unsigned long> :: type = long long?

common_type<long, unsigned long>::type istunsigned long denn in Bezug auf die Operanden nach integraler Hochstufung heißt es in der Norm ...

[...] wenn der Operand mit vorzeichenlosem Integer-Typ einen Rang hat, der größer oder gleich dem Rang des Typs des anderen Operanden ist, wird der Operand mit vorzeichenlosem Integer-Typ in den Typ des Operanden mit vorzeichenlosem Integer-Typ konvertiert

Nicht, um das Integral-Promotion-System als fehlerhaft zu bezeichnen, aber es scheint so, als ob es einen größeren Integer-Typ mit Vorzeichen gibt, der den Bereich von sowohl vorzeichenbehafteten als auch vorzeichenlosen Operanden darstellen kann, den es verwenden sollte.

Ich weiß, dass einige Plattformen möglicherweise long == long long haben. In diesem Fall kann die obige Regel wirksam werden. Aber wenn daist Sollte nicht ein größerer vorzeichenbehafteter Integraltyp verwendet werden?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage