我为什么不能使用constexpr全局变量初始化constexpr引用类型?

问题描述 投票:4回答:1
#include <iostream>
using namespace std;

constexpr int r =100;
int main()
{
    constexpr int &k = r ;
    cout << k << endl;
}

编译此代码给出“错误:‘const int的’结合型的参考‘诠释&’丢弃限定”在编译时。

c++ c++11 constexpr
1个回答
6
投票

编译const后加入int

constexpr int const & k = r ;
// ...........^^^^^

问题是,constepxr意味着const,所以当你定义r

constexpr int r =100;

您定义constexpr作为int const值(也考虑到,const应用到左侧的账户类型;右侧仅如果没有在左边一个类型,所以const intint const是一样的)。

但是,你的k

constexpr int & k = r ;

不是const(由constexpr暗示)参照一个int const但只有const参照一个int

而且你无法初始化与int值的引用到int const变量。

您可以通过k一个const参考的int const解决错误。

© www.soinside.com 2019 - 2024. All rights reserved.