让我们考虑以下代码片段
void Test()
{
int x = 0;
int& rx = x;
int* px = &x;
auto apx = px; // deduced type is int*
auto arx = rx; // deduced type is int
}
可以从指针类型中进行类比,期望推导的类型arx
是int&
,但int
实际上是。
标准中的规则是什么?背后的原因是什么?有时我会在这样的情况下被它抓住:
const BigClass& GetBigClass();
...
auto ref_bigclass = GetBigClass(); // unexpected copy is performed