C++ nullptr可以用作变量参数(varargs)吗?

C++ nullptr可以用作变量参数(varargs)吗?,c++,c++11,type-conversion,nullptr,C++,C++11,Type Conversion,Nullptr,我可以使用nullptr关键字作为变量函数的参数吗?如果是,它是否经过任何标准转换,结果值的类型是什么 具体地说,以下是正确的吗 std::printf("%p", nullptr); 还是必须是: std::printf("%p", static_cast<void *>(nullptr)); std::printf(“%p”,static_cast(nullptr)); 该标准规定,当匹配时,nullptr\t类型的任何参数都将转换为void*。因此,没有演员阵容的情况下,通

我可以使用
nullptr
关键字作为变量函数的参数吗?如果是,它是否经过任何标准转换,结果值的类型是什么

具体地说,以下是正确的吗

std::printf("%p", nullptr);
还是必须是:

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

该标准规定,当匹配
时,
nullptr\t
类型的任何参数都将转换为
void*
。因此,没有演员阵容的情况下,通话是正确的

编辑:

根据标准(§5.2.2/7):

当给定参数没有参数时,该参数为 以接收函数可以获得 通过调用
va_arg
获取参数的值。这个 左值到右值,数组到指针,函数到指针 对参数表达式执行标准转换。 具有(可能是cv限定)类型的参数
std::nullptr\u t
转换为类型
void*

§5.2.2p7当给定参数没有参数时,参数的传递方式应确保接收函数可以通过调用
va_arg
(18.10)。。。类型为
std::nullptr\u t
的参数(可能是cv限定的)转换为类型
void*
(4.10)


nullptr
的类型为
nullptr\u t
,是否?任何关于转换的想法都应该从这里开始。@BartekBanachewicz:我知道,但我找不到一条将这种类型与省略号联系起来的规则。我看的是标准转换,从来没有看过函数调用部分。Downvoter,想解释一下你的反对意见吗?太好了,我一直在找。谢谢<代码>+1
,我的标准福有点生锈了。我终于找到了它,然后返回到6个答案:p