namespace std { using va_list = see below; } #define va_arg(V, P) see below #define va_copy(VDST, VSRC) see below #define va_end(V) see below #define va_start(V, P) see below
Содержимое заголовка <cstdarg> такое же, как заголовок стандартной библиотеки C <stdarg.h>, со следующими изменениями: Ограничения, которые ISO C накладывает на второй параметр va_start макроса в заголовке <stdarg.h> , в этом международном стандарте другие. Параметр parmN - это крайний правый параметр в списке переменных параметров определения функции (тот, который находится непосредственно перед ...).219 Если параметр parmN представляет собой расширение пакета ([temp.variadic]) или объект, полученный в результате лямбда-захвата ([expr.prim.lambda]), программа имеет неправильный формат , диагностика не требуется. Если параметр parmN имеет ссылочный тип или тип, несовместимый с типом, который возникает при передаче аргумента, для которого нет параметра, поведение не определено.
См. Также: ISO C 7.16.1.1.
Обратите внимание, что va_start требуется для работы, как указано, даже если унарный operator& перегружен для типа parmN.