提问者:小点点

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


#include <iostream>
using namespace std;

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

编译此代码会给出“错误:将'const int'绑定到'int类型的引用


共1个答案

匿名用户

在< code>int后添加< code>const进行编译。

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

问题是constepxr暗示常量,因此当您定义r

constexpr int r =100;

您将<code>constexpr</code>定义为<code>int const</code>值(还应考虑<code>常量</code>应用于左侧的类型;仅当左侧没有类型时才应用于右侧;因此<code>const int</code>和<code>intconst<-code>是同一回事)。

但是你的< code>k

constexpr int & k = r ;

不是对 int constconst 引用(由 constexpr 暗示),而只是对 intconst 引用。

而且不能用intconst值初始化对int变量的引用。

您可以通过使k成为const引用int const来解决该错误。