Skip to content

Commit

Permalink
Use range_size_t utility in test, remove extra check
Browse files Browse the repository at this point in the history
Signed-off-by: Dmitriy Sobolev <dmitriy.sobolev@intel.com>
  • Loading branch information
dmitriy-sobolev committed Sep 1, 2024
1 parent 07e9aaf commit f6aaaa4
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
16 changes: 16 additions & 0 deletions test/parallel_api/ranges/std_ranges_test.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,22 @@ struct P2
friend bool operator==(const P2& a, const P2& b) { return a.x == b.x && a.y == b.y; }
};


// These are copies of __range_size and __range_size_t utilities from oneDPL
// to get a size type of a range be it sized or not
template <typename R>
struct range_size {
using type = std::uint8_t;
};

template <std::ranges::sized_range R>
struct range_size<R> {
using type = std::ranges::range_size_t<R>;
};

template <typename R>
using range_size_t = typename range_size<R>::type;

template<typename, typename = void>
static constexpr bool is_iterator{};

Expand Down
7 changes: 2 additions & 5 deletions test/parallel_api/ranges/std_ranges_transform.pass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@ main()
{
using Size = std::common_type_t<std::ranges::range_size_t<decltype(r_in)>,
std::ranges::range_size_t<decltype(r_out)>>;

Size size = std::ranges::size(r_out);
if constexpr(std::ranges::sized_range<decltype(r_in)>)
size = std::ranges::min(size, (Size)std::ranges::size(r_in));
Size size = std::ranges::min((Size)std::ranges::size(r_out), (Size)std::ranges::size(r_in));

auto res = std::ranges::transform(std::ranges::take_view(r_in, size),
std::ranges::take_view(r_out, size).begin(), std::forward<decltype(args)>(args)...);
Expand All @@ -51,7 +48,7 @@ main()
std::ranges::random_access_range auto&& r_2,
std::ranges::random_access_range auto&& r_out, auto&&... args)
{
using Size = std::common_type_t<std::ranges::range_size_t<decltype(r_1)>, std::ranges::range_size_t<decltype(r_2)>,
using Size = std::common_type_t<range_size_t<decltype(r_1)>, range_size_t<decltype(r_2)>,
std::ranges::range_size_t<decltype(r_out)>>;
Size size = std::ranges::size(r_out);
if constexpr(std::ranges::sized_range<decltype(r_1)>)
Expand Down

0 comments on commit f6aaaa4

Please sign in to comment.