C++11 nullptr拼写的基本原理(w.r.t.在例如unique_ptr中使用下划线时不使用下划线)

C++11 nullptr拼写的基本原理(w.r.t.在例如unique_ptr中使用下划线时不使用下划线),c++11,c++14,C++11,C++14,智能指针类型std::unique_ptr和std::shared_ptr的名称包含下划线(u),而关键字nullptr不包含下划线。所以我很好奇:在关键字nullptr中使用或不使用下划线的理由是什么 注意:我知道nullptr是一个用作空指针常量的关键字,类型为nullptr\u t,而std::unique\u ptr是一种类型。因此,可能原因与关键字没有下划线有关,而类型通常有下划线。看起来有点瘦,但是可能。或者,理由可能与在传统代码中使用null_ptr与null ptr有关 编辑:n

智能指针类型
std::unique_ptr
std::shared_ptr
的名称包含下划线(u),而关键字
nullptr
不包含下划线。所以我很好奇:在关键字
nullptr
中使用或不使用下划线的理由是什么

注意:我知道
nullptr
是一个用作空指针常量的关键字,类型为
nullptr\u t
,而
std::unique\u ptr
是一种类型。因此,可能原因与关键字没有下划线有关,而类型通常有下划线。看起来有点瘦,但是可能。或者,理由可能与在传统代码中使用null_ptrnull ptr有关

编辑:
nullptr
从C++11开始成为关键字

编辑(来自R2出列的注释):来自标准2.11中的表3,C++14带下划线的关键字:

  • 常量转换
    动态转换
    重新解释转换
    静态转换
  • static\u断言
  • char16\u t
    char32\u t
    wchar\u t
  • thread\u local
为完整性起见,表4中的备选表示法:

  • 和_eq
    或_eq
    异或_eq
    非_eq
    • 源于
      nullptr

      • 程序员经常要求null指针常量有一个名称,而nullptr似乎是最不可能与现有用户程序中的标识符冲突的替代文本拼写。例如,谷歌搜索NulLPTR CPP只返回150个命中,其中只有一个在C++程序中使用NulLPTR。p>
        • 替代名称NULL不可用。NULL已经是一个 在C和C++标准中实现宏定义。如果我们将NULL定义为关键字,它仍然会被隐藏在旧代码中的宏所取代。此外,可能存在(不明智地)依赖于NULL为0的“外部”代码。最后,所有CAP中的标识符通常都假定为宏,可由#ifdef等进行测试

        • 备选名称null是不切实际的。它几乎和NULL一样糟糕,因为NULL也是现有程序中常用的标识符名称,更糟糕的是,它是宏名称。例如,对于空CPP的谷歌搜索返回大约180000命中,其中估计为3%或超过5000,在C++代码中使用null作为标识符或宏。
      • 我们想到的任何其他名称都会更长,或者冲突更频繁


      (强调我的)。

      nullptr
      不在标准中,我不相信它在标准中。你能检查一下吗?我要回显“嗯”。我们没有下划线了。@self
      nullptr
      已添加到C++11标准中。现在是标准C++。你忘了“我们的非正式民意调查表明人们似乎喜欢NulLPTR”项目。这是最重要的一点。答案被接受,部分被期待:-)。喜欢霍华德关于下划线用完的评论@丹尼尔科:谢谢。项目符号项的全文来自第页。建议之五:我们的非正式民意调查显示,人们似乎喜欢nullptr。如果没有其他原因的话,那就是迄今为止在我们的经验中引起最少强烈反对的拼写。