std::nullptr_t_C++中文网
| typedef decltype(nullptr) nullptr_t; |
(C++11 起) | |
std::nullptr_t 是空指针字面量 nullptr 的类型。它是既非指针类型亦非指向成员指针类型的独立类型。
示例
若二个重载接受不同指针类型,则需要 std::nullptr_t 的重载以接受空指针常量。
#include <cstddef> #include <iostream> void f(int* pi) { std::cout << "Pointer to integer overload\n"; } void f(double* pd) { std::cout << "Pointer to double overload\n"; } void f(std::nullptr_t nullp) { std::cout << "null pointer overload\n"; } int main() { int* pi; double* pd; f(pi); f(pd); f(nullptr); // 无 void f(nullptr_t) 可能有歧义 // f(0); // 歧义调用:三个函数全部为候选 // f(NULL); // 若 NULL 是整数空指针常量则为歧义 // (如在大部分实现中的情况) }
输出:
Pointer to integer overload Pointer to double overload null pointer overload