使所有TU已知的静态对象字段的值

Make value of a static object field known to all TU

本文关键字:静态 对象 字段 TU      更新时间:2023-10-16

假设我有一个类

struct X
{
  static const X  ZERO;
  int  value;
  int  square () const { return value * value; }
  ...
};

然后在一个tu中将其定义为

const X X::ZERO { 0 };

但是,其他tu对价值一无所知,因此,据我所知,基于此类知识,例如他们不能说X::ZERO.square()在编译时为0。

是否有可能以某种方式具有静态字段,并且仍有其为优化目的的所有TU已知值?C 11很好。

听起来好像您正在寻找"整个程序优化"。在微软的编译器中,它以"链接时间代码生成"的名称。