auto&&(just like T&&in the function template parameter, where Tis the template parameter of this function template) follows slightly different rules than other conclusions - it is informally called the "universal link".
, lvalue X, auto X&. X, auto X. && . X& && X&, X && X&&.
, a1 auto int, a1 int&& , decltype(a1) .
auto a2 float&, a2, decltype(a2).
, , auto -> int , a1 auto &&a1, auto a1.