#include <iostream>
using namespace std;
constexpr int r =100;
int main()
{
constexpr int &k = r ;
cout << k << endl;
}
编译此代码会在编译时产生“错误:将'const int'绑定到类型为'int&'的引用的限定符”。
答案 0 :(得分:6)
编译在const
之后添加int
。
constexpr int const & k = r ;
// ...........^^^^^
问题在于constepxr
暗示着const
,因此当您定义r
constexpr int r =100;
您将constexpr
定义为int const
的值(还要考虑到const
应用于左侧的类型;仅当右侧没有类型时,才将其应用于右侧)。左侧;因此const int
和int const
是同一事物)。
但是您的k
constexpr int & k = r ;
不是对const
的{{1}}(由constexpr
表示)引用,而是对int const
的{{1}}引用。
而且您无法使用const
值初始化对int
变量的引用。
您可以通过将int
引用为int const
的{{1}}来解决错误。