Let V be the pack of values of type CharT
whose elements are the corresponding elements of r,
except that if r refers to a string literal object,
then V does not include the trailing null terminator of r.
Mandates: T is a structural type ([temp.param]),
is_constructible_v<T, ranges::range_reference_t<R>> is true, and
is_copy_constructible_v<T> is true.