template <typename T, template <typename> concept C> concept RangeOf = std::ranges::range<T> && C<std::ranges::range_value_t<T>>; void foo(RangeOf<std::convertible_to<double>> auto&& r) { /* . . . */ }