common_type<long, unsigned long>::type
unsigned long
, потому что в отношении операндов после целостной рекламы стандарт говорит...
[...], если операнд с целым типом без знака имеет ранг больше или равен равный рангам типа другого операнда, операнд с значный целочисленный тип преобразуется в тип операнда с unsigned integer type
Не называть целостную систему рассылки ошибкой, но кажется, что если существует более высокий тип целочисленного знака, который может представлять диапазон как подписанных, так и неподписанных операндов, он должен использоваться.
Я знаю, что некоторые платформы могут иметь длинный длинный длинный длинный, и в этом случае это правило может вступить в силу. Но если имеется более крупный тип интегрального интеграла, не следует ли его использовать?