¿Por qué common_type no es <long, unsigned long> :: type = long long?

common_type<long, unsigned long>::type esunsigned long Porque respecto a los operandos después de la promoción integral el estándar dice ...

[...] si el operando que tiene un tipo entero sin signo tiene un rango mayor o igual al rango del tipo del otro operando, el operando con tipo entero con signo se convertirá al tipo del operando con tipo entero sin signo

No llamar al sistema de promoción integral con errores, pero parece que si hay un tipo entero con signo más grande que puede representar el rango de los operandos con y sin signo, se debe usar.

Sé que algunas plataformas pueden tener una longitud larga == larga, en cuyo caso la regla anterior puede tener efecto. Pero si hayes un tipo integral con signo más grande disponible, ¿no debería usarse?

Respuestas a la pregunta(1)

Su respuesta a la pregunta