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