template<typename T>
struct foo{
void f(){
decltype(*this) a(*this);
do_some_test(a);
}
T data;
};
//compiler won't accept this
在我看来,
decltype
应该返回一种类型,以便我们可以在声明中使用它。但谷歌说,在decltype(x)
中,如果x
是一个左值,它将返回T&
,其中T
是x的类型。但他们设计它返回引用是为了什么?此外,在模板中如何创建与
*this
类型相同的类的实例?
decltype
通过应用引用限定符来反映该属性:对于lvalue表达式,使用左值引用限定符;对于xvalue,使用右值引用限定符;对于prvalue,则不使用引用。 - dyp