all.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Range v3 library
  2. //
  3. // Copyright Eric Niebler 2014-present
  4. //
  5. // Use, modification and distribution is subject to the
  6. // Boost Software License, Version 1.0. (See accompanying
  7. // file LICENSE_1_0.txt or copy at
  8. // http://www.boost.org/LICENSE_1_0.txt)
  9. //
  10. // Project home: https://github.com/ericniebler/range-v3
  11. #include <list>
  12. #include <vector>
  13. #include <range/v3/core.hpp>
  14. #include <range/v3/view/all.hpp>
  15. #include "../simple_test.hpp"
  16. #include "../test_utils.hpp"
  17. int main()
  18. {
  19. using namespace ranges;
  20. int rgi[] = {1, 1, 1, 2, 3, 4, 4};
  21. std::vector<int> vi(begin(rgi), end(rgi));
  22. std::list<int> li(begin(rgi), end(rgi));
  23. ref_view<int[7]> x = views::all(rgi);
  24. ref_view<std::vector<int>> y = views::all(vi);
  25. ref_view<std::list<int>> z = views::all(li);
  26. CPP_assert(sized_range<decltype(x)> && view_<decltype(x)>);
  27. CPP_assert(sized_range<decltype(y)> && view_<decltype(y)>);
  28. CPP_assert(sized_range<decltype(z)> && view_<decltype(z)>);
  29. x = views::all(x);
  30. y = views::all(y);
  31. z = views::all(z);
  32. CHECK(x.size() == 7u);
  33. CHECK(y.size() == 7u);
  34. CHECK(z.size() == 7u);
  35. {
  36. auto v = views::all(debug_input_view<int const>{rgi});
  37. CHECK(v.size() == size(rgi));
  38. CHECK(v.data_->first_ == rgi);
  39. auto v2 = views::all(views::all(views::all(std::move(v))));
  40. CPP_assert(same_as<decltype(v), decltype(v2)>);
  41. CHECK(v2.size() == size(rgi));
  42. CHECK(v2.data_->first_ == rgi);
  43. }
  44. return test_result();
  45. }