When there is no parameter for a given argument, the argument is passed
in such a way that the receiving function can obtain the value of the
argument by invoking va_arg.
This paragraph does not apply to arguments passed to a function parameter pack.
Function parameter packs are expanded during template instantiation ([temp.variadic]
thus each such argument has a corresponding parameter when a function template
specialization is actually called.
— end note
An argument that has type cv std::nullptr_t
to type void*
After these conversions, if the
argument does not have arithmetic, enumeration, pointer, pointer-to-member,
or class type, the program is ill-formed.
Passing a potentially-evaluated
of a scoped enumeration type or
of a class type ([class]
) having an eligible non-trivial
copy constructor, an eligible non-trivial move constructor,
non-trivial destructor ([special]
with no corresponding parameter, is conditionally-supported with
If the argument has
integral or enumeration type that is subject to the integral
, or a floating-point type that is subject to the
, the value of the argument is converted to the
promoted type before the call.