Я не знаю, насколько широко это используется, но "определение реализации" - это большой красный флаг для меня. Насколько я знаю, это могло бы означать, что реализация могла бы игнорировать ваши обозначения символов и просто назначать нормальные приращения значений, если это необходимо. Это может сделать что-то «более приятное», но вы не можете полагаться на такое поведение в компиляторах (или даже в версиях компиляторов). По крайней мере, "goto" имеет предсказуемое (если нежелательное) поведение ...
Во всяком случае, это мой 2с.
Редактировать: в зависимости от реализации:
С Глоссарий Бьярна Страуструпа C ++ :
определена реализация - аспект
Семантика C ++, которая определена для
каждая реализация, а не
указано в стандарте для каждого
реализация. Примером является размер
из int (который должен быть не менее 16
биты но могут быть длиннее). избежать
поведение, определяемое реализацией
когда возможно. Смотрите также:
не определено. TC ++ PL C.2.
также ...
undefined - аспект C ++
семантика для которой нет разумных
поведение не требуется. Примером является
разыменование указателя со значением
нуль. Избегайте неопределенного поведения. Увидеть
также: реализация определена. TC ++ PL
С.2.
Полагаю, это означает, что комментарий правильный: он должен хотя бы компилироваться, хотя ничего кроме этого не указано. Также обратите внимание на совет в определении.