次のコード スニペットを考えてみましょう
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