В стандарте С++ 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&.
Мне интересно: почему ссылочные обертки рассматриваются здесь специально?