For each Ti in Types..., the corresponding type Vi in Vtypes... is std::decay::type unless application of std::decay results in std::reference_wrapper for some type X, in which case the deduced type is X&.