[range.utility.conv.to]:
It seems like:
If C does not satisfy input_range or convertible_to<range_reference_t<R>, range_value_t<C>> is true:
can be replaced with:
If C does not satisfy input_range or R satisfy container-compatible-range<range_value_t<C>>:
But it doesn't seem necessary.