Ответ 1
С++ 03 (это довольно небольшое обновление С++ 98) основывает его совместимость с C на C89 (также известный как C90, в зависимости от того, являетесь ли вы ANSI или ISO). C89 не разрешает запятую. C99 действительно позволяет. С++ 11 позволяет это (7.2/1 имеет грамматику для объявления перечисления).
На самом деле С++ не совсем обратно совместим даже с C89, хотя это тот факт, что если бы он был на C89, вы ожидали бы, что С++ разрешит его.
Ключевым преимуществом для меня в конце запятой является, когда вы пишете это:
enum Channel {
RED,
GREEN,
BLUE,
};
а затем измените его на следующее:
enum Channel {
RED,
GREEN,
BLUE,
ALPHA,
};
Хорошо, что только одна строка изменяется, когда вы diff
версии. Чтобы получить тот же эффект, когда нет конечной запятой, вы можете написать:
enum Channel {
RED
,GREEN
,BLUE
};
Но (а) этот сумасшедший разговор и (б) он не помогает в (по общему признанию, редком) случае, когда вы хотите добавить новое значение в начале.