【问题标题】:Compile time operators编译时运算符
【发布时间】:2010-11-06 20:20:52
【问题描述】:

有人可以列出 C++ 中可用的所有编译时运算符吗?

【问题讨论】:

  • 所有运算符都可能在编译时进行评估(例如常量折叠)。但我猜你的意思是sizeof
  • 也许您可以用一个您认为是“编译时运算符”的示例来为列表播种。我不知道 C++ 中有这样的术语。
  • "Operators" 不是编译时间,它们对潜力进行操作的值是。
  • @GMan 那么为什么我到处都读到 sizeof 是编译时运算符而 typeid 不是?
  • sizeof 对编译时已知的事物进行操作; typeid 不一定是这种情况。

标签: c++ operators metaprogramming


【解决方案1】:

C++ 中有两个运算符,其结果总是可以在编译时确定,与操作数无关,它们是 sizeof[1] 和 ::[2]。

当然,其他运算符的许多特殊用途可以在编译时解决,例如整数常量表达式标准中列出的那些

[1] 与 C++ 不同,C99 具有可变长度数组类型。 sizeof 应用于 VLA 无法在编译时确定。一些 C++ 编译器提供 VLA 作为扩展。

[2] 即可以在编译时确定表达式的结果是什么实体。如果实体是对象,那么对象的值就是另外一回事了。

【讨论】:

    【解决方案2】:

    标准中没有这样的术语。

    但这里列出了所有运算符:http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B(我确定还有其他运算符...)。以一种或另一种方式对它们进行分类应该相当容易。

    【讨论】:

      猜你喜欢
      • 2012-02-16
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2017-05-12
      • 2014-04-24
      • 1970-01-01
      相关资源
      最近更新 更多