21 Language support library [language.support]

21.10 Other runtime support [support.runtime]

21.10.1 Header <cstdarg> synopsis [cstdarg.syn]

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.