考虑到功能:
template <class T> void f(const T* const ptr);
是T
为了f(nullptr)
什么?
我将不得不回答这个问题,没有。从§ 2.14.7/1(强调我的):
指针文字是关键字 nullptr。它是 std::nullptr_t 类型的纯右值。[注意:std::nullptr_t 是一个独特的类型,既不是指针类型也不是指向成员类型的指针;相反,这种类型的纯右值是一个空指针常量,可以转换为空指针值或空成员指针值。
T *
必须是std::nullptr_t
,因为std::nullptr_t
不是指针类型,所以这是不可能的。尝试nullptr
在 GCC 4.7.2 上调用它会给出一个错误,表明它正在尝试调用f(std::nullptr_t)
,但只有 had ,这与 a不是 af(const T *)
的事实一致。std::nullptr_t
T *