Skip to content

Commit

Permalink
Merge pull request #1553 from ericniebler/missing-ranges-to-overload
Browse files Browse the repository at this point in the history
add ranges::to overload for converting to container of containers
  • Loading branch information
ericniebler committed Aug 18, 2020
2 parents b0e8cc4 + a8edfeb commit 2d606af
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
11 changes: 11 additions & 0 deletions include/range/v3/range/conversion.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,17 @@ namespace ranges
return detail::to_container_fn<meta::id<Cont>>{}(static_cast<Rng &&>(rng));
}

/// \overload
template(typename Cont, typename Rng)(
/// \pre
requires input_range<Rng> AND
(!detail::convertible_to_cont<Rng, Cont>) AND
detail::convertible_to_cont_cont<Rng, Cont>)
auto to(Rng && rng) -> Cont
{
return detail::to_container_fn<meta::id<Cont>>{}(static_cast<Rng &&>(rng));
}

/// \cond
// Slightly odd initializer_list overloads, undocumented for now.
template(template<typename...> class ContT, typename T)(
Expand Down
8 changes: 8 additions & 0 deletions test/range/conversion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,5 +213,13 @@ int main()

test_zip_to_map(views::zip(views::ints, views::iota(0, 10)), 0);

// https://github.com/ericniebler/range-v3/issues/1544
{
std::vector<std::vector<int>> d;
auto m = views::transform(d, views::all);
auto v = ranges::to<std::vector<std::vector<int>>>(m);
check_equal(d, v);
}

return ::test_result();
}

0 comments on commit 2d606af

Please sign in to comment.