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 (
[support.runtime])
.[
Note 11: 
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 is converted
to type 
void* (
[conv.ptr])
.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 argument
of a scoped enumeration type (
[dcl.enum]) or
of a class type (
[class]) having
an eligible non-trivial copy constructor (
[special], 
[class.copy.ctor]),
an eligible non-trivial move constructor, or
a non-trivial destructor (
[class.dtor]),
with no corresponding parameter, is conditionally-supported with
implementation-defined semantics
.If the argument has
integral or enumeration type that is subject to the integral
promotions (
[conv.prom]), or a floating-point type that is subject to the
floating-point promotion (
[conv.fpprom]), the value of the argument is converted to the
promoted type before the call
.