【问题标题】:Is there any use for constexpr references?constexpr 引用有什么用吗?
【发布时间】:2020-02-28 12:40:22
【问题描述】:

正如标题所说,constexpr 引用有什么有用的案例吗?像这样:

static const int myvar = myfunc();  // myfunc is not constexpr
constexpr const int& myref = myvar;

myref 无论如何都不能用在需要常量表达式的地方,因为它引用的变量不是常量表达式。我看不出这与以下有何不同:

static const int myvar = myfunc();
const int& myref = myvar;

生成的程序集似乎也一样。

【问题讨论】:

  • 无论如何,constexpr const 中的const 是多余的。 constexpr 已经暗示了const
  • @JesperJuhl - constexpr 适用于引用,而不是引用。

标签: c++ c++11 reference constexpr


【解决方案1】:

constexpr& 在程序启动之前被初始化,并且必须绑定到具有静态存储持续时间的变量,这对于const& 来说都不是必需的。

【讨论】:

  • 那么它是不是更多的限制,没有任何用例? (可能除了性能)
  • @A.S.它有一个明确的用例,确保在编译时确定。虽然目前编译时计算/预处理是有限的......但必须等到反射和相关工具可用才能真正利用它。
  • @A.S.那么这样的限制已经是一个用例了。正如 ALX23z 提到的,我们将来会受益更多。想想更简单的元程序 :)
猜你喜欢
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 2012-11-30
相关资源
最近更新 更多