In the C++11 standard it states that (see cppreference.com, see also section 20.4.2.4 of the standard) it states that
template< class... Types >
tuple<VTypes...> make_tuple( Types&&... args );
Creates a tuple object, deducing the target type from the types of arguments.
For each
TiinTypes..., the corresponding typeViinVtypes...isstd::decay<Ti>::typeunless application ofstd::decayresults instd::reference_wrapper<X>for some typeX, in which case the deduced type isX&.
I am wondering: Why are reference wrappers treated special here?