Тема: Цікаве виведення типів з auto
зіткнувся з цікавою штукою:
vector<int> *pvi = new vector<int>;
pvi->push_back(1);
// завдяки тому, що auto використовує ті ж (майже) правила, що і при виведенні типів в шалонах
// ми отримали тут int, а не int&
auto i0 = (*pvi)[0];
i0 = 5;
// тому тут ми все ще побачили 1
cout << (*pvi)[0] << endl;
delete pvi;
// і тут нема невизначеної поведінки
i0 = 1;
cout << i0 << endl;
cout << typeid(i0).name() << endl;
маємо:
1
1
int