V
Size: a a a
V
E
ES
T либо в чистый тип U, либо в U&. Это как раз правила вывода для universal reference. Тут склейки типов ещё нет.T&& и получили либо U&& (rvalue-ссылка), либо (U&)&& = U& (lvalue-ссылка). Тут как раз идёт reference collapsing.DP
но внутри foo 'a' a обрабатывается не как int&& var, а как чистый тип 'int var', это не верноES
ES
int a = 5;
foo(a); // a -- lvalue, поэтому T=int&, T&&=int&, то есть var -- lvalue-ссылка на a. Изменили var -- изменилась a.
a = 5; // вернули
foo(std::move(a)); // a -- rvalue, поэтому T=int, T&&=int&&, то есть var -- rvalue-ссылка на a. Изменили var -- изменилась a.
オ
LR::geometry::Point. C++14ES
template<typename...> class Iterator на typename Iterator.Iterator другой шаблонный тип и при помощи SFINAE/концептов проверить, что если у него отбросить const, то получится что надоES
decltypeD
DP
DP