DP
Size: a a a
DP
CD
T
T
CD
vector<int> f();
vector<vector<int>> g();
template <typename T> auto as_prvalue(T&& t) { return t; }
void test() {
for (auto x : f()) {}; //ok
for (auto x : g()[0]) {} //not ok; операция [] для вектора вернёт lvalue
for (auto x : as_prvalue(g()[0])) {} //снова ok, но g()[0] скопируется
}
CD
CD
MK
a
DP
MK
DP
T
T
AE
T
AE
T
AE
AE