This wording is relative to N4971.
Edit 22.4.6 [tuple.apply] as indicated:
template<class T, tuple-like Tuple> constexpr T make_from_tuple(Tuple&& t);
-3- Let I be the pack 0, 1, ..., (tuple_size_v<remove_reference_t<Tuple>> - 1).
-4- Constraints:
- is_constructible_v<T, decltype(get<I>(declval<Tuple>()))...> is true, and- if tuple_size_v<remove_reference_t<Tuple>> is 1, then reference_constructs_from_temporary_v<T, decltype(get<0>(declval<Tuple>()))> is false.
-3- Mandates: If tuple_size_v<remove_reference_t<Tuple>> is 1, then reference_constructs_from_temporary_v<T, decltype(get<0>(declval<Tuple>()))> is false.
-4--5- Effects: Given the exposition-only function:
[...]
template<class T, tuple-like Tuple, size_t... I>requires is_constructible_v<T, decltype(get<I>(declval<Tuple>()))...>constexpr T make-from-tuple-impl(Tuple&& t, index_sequence<I...>) { // exposition only return T(get<I>(std::forward<Tuple>(t))...); }[...]Equivalent to:
return make-from-tuple-impl<T>( std::forward<Tuple>(t), make_index_sequence<tuple_size_v<remove_reference_t<Tuple>>>{});[Note 1: The type of T must be supplied as an explicit template parameter, as it cannot be deduced from the argument list. — end note]