gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:50:56 28 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用于变量声明。

所以我的问题是:
  • constexpr引用有用吗? (即,比 const 引用“更好”)
  • 如果是,我如何有效地定义它们?

  • 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/69495268/

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