Я неправильно понял семантику функций с переменным числом аргументов. 6.5.2.2(p6)
Если функция определена с типом, который включает в себя прототип,
и либо прототип заканчивается многоточием (, ...) или
типы аргументов после продвижения не совместимы с
типы параметров, поведение не определено.
Это не совсем понятно. Заканчивается ли в определении функции ниже прототипа многоточием?
void foo(int i, ...){
//...
}
Сначала я подумал, что речь идет о функции, в которой список параметров содержит только многоточие, например
void foo(...){
//...
}
но этот случай описывается 6.9.1(p8)
:
Если определена функция, которая принимает переменное число аргументов
без списка типов параметров, который заканчивается многоточием,
поведение не определено
Так что я не совсем понимаю, что они имели в виду под
либо прототип заканчивается многоточием (, ...)
в 6.5.2.2(p6)