C++ 是一个;“文字类型”;和“a”一样;字面意义上的“;?

C++ 是一个;“文字类型”;和“a”一样;字面意义上的“;?,c++,types,language-lawyer,terminology,literals,C++,Types,Language Lawyer,Terminology,Literals,我已经读了一些关于“文字”的内容,在源代码中它似乎是一种固定值。另一方面,我遇到了术语“文字类型”,它可以是 如果类型是: 标量类型;或 引用文本类型的引用类型;或 文字类型的数组;或 具有以下所有属性的类类型(第9条):-它有一个平凡的析构函数 非静态数据成员(如果有)的大括号或相等初始值设定项中的每个构造函数调用和完整表达式都是常量表达式(5.19) 它是聚合类型(8.5.1),或至少有一个不是复制或移动构造函数的constexpr构造函数或构造函数模板,以及 它的所有非静态数

我已经读了一些关于“文字”的内容,在源代码中它似乎是一种固定值。另一方面,我遇到了术语“文字类型”,它可以是

如果类型是:

  • 标量类型;或

  • 引用文本类型的引用类型;或

  • 文字类型的数组;或

  • 具有以下所有属性的类类型(第9条):-它有一个平凡的析构函数

  • 非静态数据成员(如果有)的大括号或相等初始值设定项中的每个构造函数调用和完整表达式都是常量表达式(5.19)

  • 它是聚合类型(8.5.1),或至少有一个不是复制或移动构造函数的constexpr构造函数或构造函数模板,以及

  • 它的所有非静态数据成员和基类都是文本类型

根据c11标准。现在我很困惑,因为我的印象是“类型”描述的质量与“文字”不同。。。。因此,问题是:

“文字”和“文字类型”是两个不同的东西——右“/P>”在StruouTutp“C++编程语言中,我发现了一个定义:”一个带有SCONExPR构造函数的类被称为文字类型。“是的”,“字面”和“文字类型”是不同的东西。在C++ 17标准中,有一个脚注(数字22),表示“术语”字面。在本国际标准中,通常指定ISO C中称为“常量”的标记。根据同一标准中的注释(见第10.5.4段),文字类型是一种“类型”,可以在常量表达式中为其创建对象“。这两个定义都不是规范性/正式的定义,但我提到它们是因为它们可能有助于理解。