Необходимо, чтобы реализация C ++ установила символы '0' - '9' так, чтобы они имели непрерывные числовые значения, т. Е. Чтобы:
'0' -> 0+n
'1' -> 1+n
m -> m+n
'9' -> 9+n
Я не могу найти упомянутое в документации isdigit
([классификация] (22.3.3.1 Классификация символов)) *,
и при этом я не могу найти это в документации локали (но возможно я не выглядел достаточно трудно).
В 2.3 наборах символов мы находим, что
Базовый исходный набор символов состоит из 96 символов: пробел, управляющие символы, представляющие
горизонтальная табуляция, вертикальная табуляция, подача формы и новая строка, а также следующие 91 графический символ
Но там не упоминается ни о каком порядке (но, возможно, я не выглядел достаточно усердно).
*: Интересная сноска там:
При использовании в цикле быстрее кэшировать фасет ctype <> и использовать его непосредственно [вместо isdigit () и др., Конец комментария] или использовать векторную форму ctype <> :: is.