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
Ti
inTypes...
, the corresponding typeVi
inVtypes...
isstd::decay<Ti>::type
unless application ofstd::decay
results instd::reference_wrapper<X>
for some typeX
, in which case the deduced type isX&
.
I am wondering: Why are reference wrappers treated special here?