Это предположение, но в C ++ может иметь смысл иметь функцию без других параметров, например, void f(...)
, тогда как в C такая функция бесполезна (насколько я знаю), поэтому ...
должен следовать некоторымдругой параметр и, следовательно, запятая.
С точки зрения грамматики проще просто разрешить void f( int a ... )
и придать ему очевидный смысл, чем запретить его, и это не вызовет большойнагрузка на разработчиков компиляторов или путаница для программистов.
(Первоначально я думал, что это может быть связано с тем, чтобы сделать грамматику для пакетов параметров более регулярной, но я обнаружил, что это явно разрешено в C ++ 03 в любомслучай.)