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
The contents of the header
<cstdarg> are the same as the C
standard library header
<stdarg.h>, with the following changes:
The restrictions that ISO C places on the second parameter to the
va_start
macro in header
<stdarg.h>
are different in this International Standard
. The parameter
parmN
is the rightmost parameter in the variable parameter list
of the function definition (the one just before the
...)
.
If the parameter
parmN is a pack expansion (
[temp.variadic]) or
an entity resulting from a lambda capture (
[expr.prim.lambda]),
the program is ill-formed, no diagnostic required
. If the parameter
parmN
is of a reference type, or of a type that is not compatible with the
type that results when passing an argument for which there is no
parameter, the behavior is undefined
.