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