【发布时间】:2021-12-21 07:00:49
【问题描述】:
代码
#include <iostream>
int main()
{
int a=3;
int *p=&a;
decltype (a) k1;
decltype (*p) k2;
return 0;
}
输出
Declaration of reference variable 'k2' requires an initializer
对这种现象的解释是“decltype 为表达式返回一个引用类型,该表达式产生的对象可以位于赋值的 LHS 上”
看看*p 产生的对象的值意味着3,以及a 产生的自身值是3。
现在我们操纵性地讨论*p 指的是对象a 然后a 也指的是a 本身。
所以我没有消化对这种现象的解释。
【问题讨论】:
标签: c++ reference decltype rvalue lvalue