В стандарте С++ 11 указано, что (см. cppreference.com, см. также раздел 20.4.2.4 стандарта), в котором указано, что
template< class... Types >
tuple<VTypes...> make_tuple( Types&&... args );
Создает объект кортежа, выводя тип цели из типов аргументов.
Для каждого
Ti
вTypes...
соответствующий типVi
вVtypes...
равенstd::decay<Ti>::type
, если приложениеstd::decay
не приведет кstd::reference_wrapper<X>
для некоторого типаX
, и в этом случае выведенное типX&
.
Мне интересно: почему ссылочные обертки рассматриваются здесь специально?