【发布时间】:2020-05-23 19:14:12
【问题描述】:
我想在 switch(T) 的情况下使用 t(rvalue reference),但我收到错误 the value of 't' is not usable in a constant expression。如何以正确的方式做到这一点。
#include <iostream>
using namespace std;
int main(){
int (&&t)=5;
int T{};
switch(T){
case t: // error in this case
cout<<t<<endl;
break;
default:
cout<<"default"<<endl;
break;
}
}
【问题讨论】:
-
恕我直言,你的例子毫无意义。你又想达到什么目的?你为什么要打开一个未初始化的变量——你希望这样做有什么好处?你希望这个程序打印什么,为什么?
-
我正在尝试理解右值引用。 T 是未初始化的(switch 将使用它的默认大小写)。
-
不,从未初始化的变量中读取是未定义的。
-
我的错,我现在已经初始化了 T
-
编译器告诉你的。
5是一个常量表达式。t不是。
标签: c++ switch-statement rvalue-reference