据我所知,
引用C++11标准:(18.2/9)
nullptr
是核心语言的一部分。引用C++11标准:(18.2/9)
并且在头文件
nullptr_t
定义如下:
namespace std { typedef decltype(nullptr) nullptr_t; }
<cstddef>
中定义。
decltype(nullptr)
,就不需要使用nullptr_t
了。nullptr_t
并不是核心概念,它只是一个辅助工具。 - François Andrieuxnullptr_t
: "如果两个或多个重载函数接受不同的指针类型,则需要一个接受空指针参数的std::nullptr_t
重载函数。"(参见 std::nullptr_t 的 cppreference)。 - Adrian Moledecltype(nullptr)
,就不需要nullptr_t
。你可以使用decltype(nullptr)
代替nullptr_t
。nullptr_t
只是decltype(nullptr);
的方便别名。你应该使用nullptr_t
,我的评论旨在说明为什么nullptr_t
可能不是核心语言的一部分。 - François Andrieuxnullptr
作为语言的一部分,可以更轻松地确保它按照应有的方式工作,因为您可以轻松地制定具体规则。 - Phil1970