Hi, 

I've updated the wording, but I'm not sure should we keep the requires-clause on "make-from-tuple-impl"?

Wording:

This wording is relative to N4971.

  1. 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]