que not declared c++ c++11 type-conversion nullptr

c++ - not - ¿Se puede usar nullptr como un argumento variable(varargs)?



nullptr vs null (2)

¿Puedo usar la palabra clave nullptr como argumento para una función de variable? Si es así, ¿experimenta algún tipo de conversión estándar y cuál es el tipo del valor resultante?

Concretamente, ¿es correcto lo siguiente?

std::printf("%p", nullptr);

O tiene que ser:

std::printf("%p", static_cast<void *>(nullptr));


§5.2.2p7 Cuando no hay un parámetro para un argumento dado, el argumento se pasa de tal manera que la función receptora puede obtener el valor del argumento invocando va_arg (18.10) ... Un argumento que tiene (posiblemente cv- calificado) type std::nullptr_t se convierte al tipo void* (4.10) ...


El estándar dice que cualquier argumento de tipo nullptr_t se convertirá a void* cuando coincida ... Así que la convocatoria es correcta sin el elenco.

EDITAR:

De la norma (§5.2.2 / 7):

Cuando no hay un parámetro para un argumento dado, el argumento se pasa de tal manera que la función receptora puede obtener el valor del argumento invocando va_arg . Las conversiones estándar lvalue-to-rvalue, array-to-pointer y function-to-pointer se realizan en la expresión de argumento. Un argumento que tiene (posiblemente cv-calificado) tipo std::nullptr_t se convierte en el tipo void* .