据我所知nullptr
是核心语言的一部分。
引用 C++11:(18.2/9)
nullptr_t
is defined as follows:
namespace std { typedef decltype(nullptr) nullptr_t; }
并在 header 中定义 <cstddef>
.
最佳答案
因为它可以。 C++ 标准化过程的一个中心目标是在向语言添加内容时尽可能少地改变核心语言。
nullptr
篡改了 0
的用法来表示空指针和,呃,零。由于显而易见的原因,使用 0
导致问题,f(0)
调用 f(int)
还是 f(int*)
?于是在核心语言中加入了一个全新的字面量:nullptr
。它的类型只是 decltype(nullptr)
所以 nullptr_t
被添加为一个快捷方式:
namespace std {
using nullptr_t = decltype(nullptr);
}
关于c++ - 为什么 nullptr 是核心语言的一部分,而 nullptr_t 是 STL 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628496/