4

阅读了关于标准 C++ 属性[[pure]]的最新提案,我遇到了一些问题:

  1. [[pure]] 函数可以读取 const 全局变量吗?
  2. [[pure]] 函数可以读取静态 const 变量吗?
  3. [[pure]] 函数是否可以写入但不读取指针或引用变量(并且仍然可能返回 void)?
4

1 回答 1

4

[[pure]],如果我没记错的话,需要 100% 确定特定输入应始终返回特定输出。考虑到 const globals 和 static const globals 永远不应该改变状态,应该没问题。最后,读取一个可以改变状态的指针并不是一个纯函数。如果您写入在其他地方访问的指针,那么它会产生副作用并且不是 [[pure]]。

你必须问自己函数结果是否依赖于无关变量的状态,如果你回答是,它不是 [[pure]]。您还必须问自己,输入是否会对返回值以外的任何内容产生影响。如果这是真的,那么它不是[[纯]]

于 2013-10-09T21:01:54.350 回答