c++ - 使所有 TU 都知道静态对象字段的值

标签 c++ c++11

假设我有一个类

struct X
{
  static const X  ZERO;

  int  value;

  int  square () const { return value * value; }
  ...
};

然后在一个TU中我将其定义为

const X X::ZERO { 0 };

但是,其他 TU 对值(value)一无所知,因此据我所知,无法根据这些知识进行优化,例如他们不能说 X::ZERO.square() 在编译时是 0。

是否有可能以某种方式拥有一个静态字段,并且仍然让所有 TU 都知道它的值以进行优化? C++11 没问题。

最佳答案

听起来好像您在寻找“全程序优化”。在 Microsoft 的编译器中,它的名称为“链接时间代码生成”。

关于c++ - 使所有 TU 都知道静态对象字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21341192/

相关文章:

c++ - 使用 boost::asio 将 resolve_handler 绑定(bind)到解析器 async_resolve

c++ - 将 int 数据存储和读取到 char 数组中

c++ - 正则表达式 - 计算所有数字

c++ - 位置.hh :46: error: expected unqualified-id before ‘namespace’

c++通过值或引用在lambda内部分配指针值

c++ - 在 stackoverflow 上应该阅读哪些问题? (关于 C++)

c++ - GCC 4.7.2 中损坏的 std::unique_ptr

c++ - 如何确定输出流链是否结束?

c++ - std::make_pair 与 c++ 11

c++ - 试图返回一个用 `std::unique_ptr` 构造的 `NULL`