#include <iostream>
using namespace std;
constexpr int r =100;
int main()
{
constexpr int &k = r ;
cout << k << endl;
}
编译此代码会给出“错误:将'const int'绑定到'int类型的引用
在< 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 const
的 const
引用(由 constexpr
暗示),而只是对 int
的 const
引用。
而且不能用intconst
值初始化对int
变量的引用。
您可以通过使k
成为const
引用int const
来解决该错误。