我可以使用nullptr
关键字作为变量函数的参数吗?如果是这样,它是否经过任何类型的标准转换,结果值的类型是什么?
具体来说,以下是否正确?
std::printf("%p", nullptr);
或者它必须是:
std::printf("%p", static_cast<void *>(nullptr));
我可以使用nullptr
关键字作为变量函数的参数吗?如果是这样,它是否经过任何类型的标准转换,结果值的类型是什么?
具体来说,以下是否正确?
std::printf("%p", nullptr);
或者它必须是:
std::printf("%p", static_cast<void *>(nullptr));
§5.2.2p7当给定参数没有参数时,参数的传递方式使得接收函数可以通过调用
va_arg
(18.10) 来获取参数的值... ) 类型std::nullptr_t
转换为类型void*
(4.10)...
该标准说,任何类型的参数都nullptr_t
将void*
在匹配时转换为...
。因此,没有演员表的调用是正确的。
编辑:
从标准(§5.2.2/7):
当给定参数没有参数时,参数以这样一种方式传递,即接收函数可以通过调用来获取参数的值
va_arg
。对参数表达式执行左值到右值、数组到指针和函数到指针的标准转换。具有(可能是 cv 限定的)类型的参数std::nullptr_t
被转换为 typevoid*
。