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?