5

考虑到功能:

template <class T> void f(const T* const ptr);

T为了f(nullptr)什么?

4

1 回答 1

5

我将不得不回答这个问题,没有。从§ 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_tT *

于 2013-03-03T03:57:06.907 回答