gpt4 book ai didi

c++ - 如何初始化 constexpr 引用

转载 作者:IT老高 更新时间:2023-10-28 21:50:30 25 4
gpt4 key购买 nike

我正在尝试初始化 constexpr 引用但没有成功。我试过了

#include <iostream>

constexpr int& f(int& x) // can define functions returning constexpr references
{
return x;
}

int main()
{
constexpr int x{20};
constexpr const int& z = x; // error here
}

但我收到编译时错误

error: constexpr variable 'z' must be initialized by a constant expression

删除 const 会导致

error: binding of reference to type 'int' to a value of type 'const int' drops qualifiers

尽管我感觉 constexpr 自动暗示 const 用于变量声明。

所以我的问题是:

  1. constexpr 引用有用吗? (即,比 const 引用“更好”)
  2. 如果是,我该如何有效地定义它们?

PS:我看到了几个与我相关的问题,例如 Which values can be assigned to a `constexpr` reference? ,但我认为它们没有解决我的问题。

最佳答案

  1. Are constexpr references ever useful? (i.e., "better" than const references)

它们保证在程序启动之前被初始化,而对 const 的引用可以在程序开始运行后的动态初始化期间被初始化。

  1. If yes, how can I effectively define them?

constexpr 引用必须绑定(bind)到全局变量,而不是局部变量(或更正式地说,它必须绑定(bind)到具有静态存储持续时间的东西)。

引用在概念上等同于取变量的地址,局部变量的地址不是常量(即使在main中也只能调用一次,所以它的局部变量是只初始化一次)。

关于c++ - 如何初始化 constexpr 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28614591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com