为什么我不能使用 constexpr 全局变量来初始化 constexpr 引用类型
Why can I not use a constexpr global variable to initialize a constexpr reference type?
#include <iostream>
using namespace std;
constexpr int r =100;
int main()
{
constexpr int &k = r ;
cout << k << endl;
}
编译此代码会在编译时给出"错误:将'const int'绑定到类型'int&'的引用会丢弃限定符"。
编译在
int
后添加const
。
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 ;
不是对int const
的const
(由constexpr
暗示)引用,而只是对int
的const
引用。
而且,不能使用int const
值初始化对int
变量的引用。
您可以通过使k
成为对int const
的const
引用来解决此错误。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- C ++程序如何返回我的数组或写入全局变量
- 为什么我的数组值与此处的全局变量不匹配?
- 静态 constexpr 全局变量
- 在 C++17 中修改 constexpr 函数中的全局变量
- 获取 constexpr 全局变量(不是静态成员)的链接器符号
- 全局变量的constexpr初始化
- 为什么我不能使用 constexpr 全局变量来初始化 constexpr 引用类型
- 我什么时候可以确定一个 constexpr 全局变量会像 C 宏一样被"forgotten"?