什么C++ 0x标头应该定义nullptr?

swe*_*rup 8 c++ header nullptr c++11

既然C++ 0x几乎就在这里,我一直在试验它,特别是使用nullptr.如果需要使用它,我无法弄清楚应该包含哪些标准头文件.

任何帮助表示赞赏.

ken*_*ytm 20

不需要标题.它是一个内置的关键字(§[lex.nullptr]).

2.14.7指针文字[lex.nullptr]

指针文字:
        nullptr

指针文字是关键字 nullptr.它是一种类型的prvalue std::nullptr_t.[ 注意: std::nullptr_t 是一种不同的类型,既不是指针类型也不是指向成员类型的指针; 相反,这种类型的prvalue是一个空指针常量,可以转换为空指针值或null成员指针值.见4.10和4.11.-endnote ]


std::nullptr_t但是,它的类型在标题中被"定义" <cstddef>(§[support.types]/9).

nullptr_t 定义如下:

namespace std {
    typedef decltype(nullptr) nullptr_t;
}
Run Code Online (Sandbox Code Playgroud)

其类型nullptr_t是同义词,具有3.9.1和4.10中描述的特征.[ 注意:虽然nullptr不能使用地址,但可以采用另一个nullptr_t左值的对象的地址.-endnote ]

  • 嘿,我喜欢将`nullptr`的类型定义为"nullptr"类型的向后逻辑. (12认同)