Skip to content
Open
Changes from 217 commits
Commits
Show all changes
218 commits
Select commit Hold shift + click to select a range
53944ea
[oneDPL][ranges][zip_view] + initial implementation of standard compl…
MikeDvorskiy Sep 17, 2024
dd621de
[oneDPL][ranges][zip_view] + missing arithmetic operations for zip_vi…
MikeDvorskiy Sep 18, 2024
070b844
[oneDPL][ranges][zip_view] + return type fix for operator*()
MikeDvorskiy Sep 20, 2024
51c5c2e
[oneDPL][ranges][tuple] + const assignment operator overload
MikeDvorskiy Sep 24, 2024
f170639
[oneDPL][ranges][zip_view] + test
MikeDvorskiy Sep 24, 2024
0970552
[oneDPL][ranges][zip_view] + apply_to_tuple instead of std::apply; st…
MikeDvorskiy Sep 24, 2024
996828c
[oneDPL][ranges][zip_view] + changes in the test
MikeDvorskiy Sep 25, 2024
212324b
[oneDPL][ranges][zip_view] -> oneapi::dpl::ranges
MikeDvorskiy Sep 25, 2024
dba1b44
[oneDPL][ranges][zip_view][test] -> oneapi::dpl::ranges
MikeDvorskiy Sep 25, 2024
506ad9e
[oneDPL][ranges][zip_view] + file header and guards
MikeDvorskiy Sep 25, 2024
2643c63
[oneDPL][ranges][zip_view] + apply_to_tuple instead of std::apply; st…
MikeDvorskiy Sep 25, 2024
036c1c6
[oneDPL][ranges][zip_view] + begin_imp, end_impl to reduce code dupli…
MikeDvorskiy Sep 26, 2024
452ae82
Revert "[oneDPL][ranges][zip_view] + begin_imp, end_impl to reduce co…
MikeDvorskiy Sep 26, 2024
853c2f0
[oneDPL][ranges][zip_view][test] + minor changes
MikeDvorskiy Sep 27, 2024
cd5606e
[oneDPL][ranges][zip_view] + minor changes
MikeDvorskiy Oct 7, 2024
530adbd
[oneDPL][ranges][zip_view] + #include "tuple_impl.h"
MikeDvorskiy Oct 9, 2024
e50cb9e
[oneDPL][ranges][zip_view][test] + test_zip_view_base_op()
MikeDvorskiy Oct 22, 2024
b8fe83e
[oneDPL][ranges][zip_view] + implementation fix for 'operator-' betwe…
MikeDvorskiy Oct 18, 2024
a55791c
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
a5e698c
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
5d26c97
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
041192a
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
f72be27
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
f36e469
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
2d96a41
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
c964bc2
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
d4cb936
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Oct 21, 2024
c62597b
[oneDPL][ranges][zip_view] + std::get usage
MikeDvorskiy Oct 21, 2024
873e8b8
[oneDPL][ranges][zip_view] + 'std::forward<decltype(__args)>(__args)'…
MikeDvorskiy Oct 21, 2024
b1cceb5
[oneDPL][ranges][zip_view] + 'minor change' for const/non const type …
MikeDvorskiy Oct 21, 2024
e12c67b
[oneDPL][ranges][zip_view] + fix operator<=> implementation
MikeDvorskiy Oct 22, 2024
6e5e414
[oneDPL][ranges][zip_view][test] removed cbegin(), cend() test cases …
MikeDvorskiy Oct 25, 2024
c23deac
[oneDPL][ranges][zip_view][test] + front(), back() methods check
MikeDvorskiy Oct 25, 2024
732fc55
[oneDPL][ranges][zip_view][test] + empty constructor call check
MikeDvorskiy Oct 29, 2024
839b2cf
[oneDPL][ranges][zip_view][test] + ;
MikeDvorskiy Oct 30, 2024
70b43b6
[oneDPL][ranges][zip_view][test] const for compare_with_sentinels
MikeDvorskiy Nov 4, 2024
bb15590
[oneDPL][ranges][zip_view][test] a fix for zip_view::iterator::operator-
MikeDvorskiy Nov 6, 2024
298af5a
[oneDPL][rfc][zip_view] + std::ranges::range_reference_t usage; it f…
MikeDvorskiy Nov 8, 2024
dd627f5
[oneDPL][ranges][zip_view][test] + minor changes
MikeDvorskiy Nov 8, 2024
539aae2
[oneDPL][zip_view] + minor improvements
MikeDvorskiy Nov 15, 2024
a8b7207
[oneDPL][ranges][zip_view][test] + EXPECT_TRUE usage
MikeDvorskiy Nov 19, 2024
793b1a3
[oneDPL][ranges][zip_view] + operator oneapi::dpl::zip_iterator<Itera…
MikeDvorskiy Dec 2, 2024
7a68921
[oneDPL][ranges][zip_view][test] + check conversion to oneapi::dpl::z…
MikeDvorskiy Dec 2, 2024
3b934c3
[oneDPL][ranges][zip_view][test] + EXPECT_TRUE usage
MikeDvorskiy Dec 5, 2024
93ea41b
[oneDPL][ranges][zip_view] + clang format
MikeDvorskiy Jan 16, 2025
a529582
[oneDPL][ranges][zip_view][test] + result checks
MikeDvorskiy Jan 16, 2025
47a7a73
[oneDPL][ranges][zip_view] + LLVM tests for ranges::zip_view (from C+…
MikeDvorskiy Feb 5, 2025
7c2d0a2
[oneDPL][ranges][zip_view] + __simple_view_concep. a fix for operator==
MikeDvorskiy Feb 7, 2025
e51cf7d
[oneDPL][ranges][zip_view][test] LLVM test begin.pass adaptation for …
MikeDvorskiy Feb 7, 2025
52f2119
[oneDPL][ranges][zip_view] + fix for end() and compare_equal
MikeDvorskiy Feb 7, 2025
4360039
[oneDPL][ranges][zip_view][test] LLVM test end.pass adaptation for on…
MikeDvorskiy Feb 7, 2025
117859f
[oneDPL][ranges][zip_view] + fix an error in zip_fn
MikeDvorskiy Feb 7, 2025
b5d604c
[oneDPL][ranges][zip_view][test] LLVM test cpo.pass adaptation for on…
MikeDvorskiy Feb 7, 2025
5f9c575
[oneDPL][ranges][zip_view] + implementation fixes
MikeDvorskiy Feb 10, 2025
4796307
[oneDPL][ranges][zip_view][test] LLVM test borrowing.compile.pass ada…
MikeDvorskiy Feb 10, 2025
2c022e6
[oneDPL][ranges][zip_view] + explicit for constructor
MikeDvorskiy Feb 10, 2025
8514ddf
[oneDPL][ranges][zip_view][test] LLVM test сtad.compile.pass adaptati…
MikeDvorskiy Feb 10, 2025
795325f
[oneDPL][ranges][zip_view][test] LLVM test сtor.default.pass adaptati…
MikeDvorskiy Feb 10, 2025
ba743ce
[oneDPL][ranges][zip_view][test] LLVM test general.pass and ctor.view…
MikeDvorskiy Feb 10, 2025
ac2029e
[oneDPL][ranges][zip_view] + correct implementation of method 'size()…
MikeDvorskiy Feb 10, 2025
b72d34a
[oneDPL][ranges][zip_view][test] another couple of LLVM tests adapta…
MikeDvorskiy Feb 10, 2025
cec5084
[oneDPL][ranges][zip_view] + arithmetic operation fixes
MikeDvorskiy Feb 12, 2025
3d80753
[oneDPL][ranges][zip_view][test] LLVM test arithmetict.pass adaptatio…
MikeDvorskiy Feb 12, 2025
2ae432d
[oneDPL][ranges][zip_view] + fixes in private zip_view::iterator cons…
MikeDvorskiy Feb 12, 2025
81eb9a1
[oneDPL][ranges][zip_view][test] compare.pass test adaptation for oneDPL
MikeDvorskiy Feb 12, 2025
bfc1779
[oneDPL][ranges][zip_view] + fixes in apply_to_tuple using
MikeDvorskiy Feb 12, 2025
5583916
[oneDPL][ranges][zip_view][test] another LLVM test portion were adopt…
MikeDvorskiy Feb 12, 2025
51e8606
[oneDPL][ranges][zip_view] + iter_move friend method
MikeDvorskiy Feb 13, 2025
19f1aac
[oneDPL][ranges][zip_view][test] another couple of LLVM tests adapta…
MikeDvorskiy Feb 13, 2025
e53952f
[oneDPL][ranges][zip_view] + iter_swap friend method
MikeDvorskiy Feb 13, 2025
d4d12c3
[oneDPL][ranges][zip_view][test] LLVM test iter_swap.pass adaptation …
MikeDvorskiy Feb 13, 2025
c831ad5
[oneDPL][ranges][zip_view] + fix: public inheritance for class iterat…
MikeDvorskiy Feb 13, 2025
555e1ff
[oneDPL][ranges][zip_view][test] another LLVM test adaptation for on…
MikeDvorskiy Feb 13, 2025
9b2b5e7
[oneDPL][ranges][zip_view][test] another couple of LLVM tests adapta…
MikeDvorskiy Feb 13, 2025
47e3f58
[oneDPL][ranges][zip_view][test] + test cases disabling #if __GNUC__ …
MikeDvorskiy Feb 13, 2025
66f583d
[oneDPL][ranges][tuple] + a fix for default. According to std::tuple:…
MikeDvorskiy Feb 17, 2025
acba4e3
[oneDPL][ranges][zip_view] + a fix: __maybe_const usage.
MikeDvorskiy Feb 17, 2025
8e023f2
[oneDPL][ranges][zip_view][test] another LLVM tests adaptation for o…
MikeDvorskiy Feb 17, 2025
e344bce
[oneDPL][ranges][zip_view][test] minor changes for begin.pass test
MikeDvorskiy Feb 17, 2025
1032847
[oneDPL][ranges][zip_view][test] the tests renamed: + prefix "zip_view."
MikeDvorskiy Feb 17, 2025
939c6fa
[oneDPL] a fixe for __pattern_walk2 implementation in case of forward…
MikeDvorskiy Feb 17, 2025
d88a100
[oneDPL][ranges][zip_view] removed spaces
MikeDvorskiy Feb 17, 2025
94dcd28
[oneDPL][ranges][zip_view][test] additional LLVM tests adaptation for…
MikeDvorskiy Feb 19, 2025
d90fd15
[oneDPL][ranges][tuple] + a fix for Value-initializes all elements of…
MikeDvorskiy Feb 18, 2025
52bf699
[oneDPL][ranges][zip_view][test] + #include "support/test_config.h"
MikeDvorskiy Feb 18, 2025
646e5bb
[oneDPL][ranges][tuple] + a fix for the internal tuple default constr…
MikeDvorskiy Feb 19, 2025
e1c37b1
[oneDPL][ranges][zip_view] + namespace views = ranges::views;
MikeDvorskiy Feb 19, 2025
a31a933
[oneDPL][ranges][zip_view][test] removed unused code
MikeDvorskiy Feb 24, 2025
a318685
[oneDPL][ranges][zip_view] + fix: std::ranges::enable_borrowed_range …
MikeDvorskiy Feb 24, 2025
7b431f4
[oneDPL][ranges][zip_view][test] + include
MikeDvorskiy Feb 24, 2025
8d3a006
[oneDPL][ranges][zip_view] + fix: using ranges::views::zip; in dpl::v…
MikeDvorskiy Feb 24, 2025
16f6aaa
[oneDPL][ranges][zip_view] + fixes
MikeDvorskiy Feb 24, 2025
713b2d1
[oneDPL][ranges][zip_view] + fixes
MikeDvorskiy Feb 24, 2025
6f469e3
[oneDPL][ranges][zip_view] + a fix for iterator private constructor
MikeDvorskiy Feb 25, 2025
8c87471
[oneDPL][ranges][zip_view][test] + name space fix
MikeDvorskiy Feb 25, 2025
c06109a
[oneDPL][tuple] + a comment default constructor
MikeDvorskiy Feb 25, 2025
1c19f76
[oneDPL][ranges][zip_view][test] removed // UNSUPPORTED: c++03, c++11…
MikeDvorskiy Feb 25, 2025
52c1be3
Apply suggestions from code review
MikeDvorskiy Feb 25, 2025
f1986e9
[oneDPL][ranges][zip_view][test] header changed
MikeDvorskiy Feb 25, 2025
378c798
[oneDPL][ranges][zip_view] removed the commented code
MikeDvorskiy Feb 25, 2025
c38298a
Apply suggestions from code review
MikeDvorskiy Feb 26, 2025
e7adc47
Apply suggestions from code review
MikeDvorskiy Feb 26, 2025
c469760
[oneDPL][ranges][zip_view] + difference_type alias usage
MikeDvorskiy Feb 26, 2025
289e8b7
Revert "[oneDPL][ranges][zip_view] + difference_type alias usage"
MikeDvorskiy Feb 26, 2025
ac25547
[oneDPL][ranges][zip_view] + difference_type alias usage for iterator
MikeDvorskiy Feb 26, 2025
83d50ef
[oneDPL][ranges][zip_view] + difference_type alias usage for sentinel
MikeDvorskiy Feb 26, 2025
96c3ee4
[oneDPL][ranges][zip_view] operator- code re-factored.
MikeDvorskiy Feb 28, 2025
21ad5a8
[oneDPL][ranges][zip_view] uglification, part1
MikeDvorskiy Feb 28, 2025
32b5ee3
[oneDPL][ranges][zip_view] __apply_to_tuple stuff refactoring
MikeDvorskiy Feb 28, 2025
adb8a0e
[oneDPL][ranges][zip_view] uglification, part2
MikeDvorskiy Feb 28, 2025
1630d52
[oneDPL][ranges][zip_view] moved the internal utility to namespace __…
MikeDvorskiy Feb 28, 2025
adbc836
[oneDPL][ranges][zip_view] + clang format
MikeDvorskiy Feb 28, 2025
70126d2
Revert "[oneDPL][ranges][zip_view] + clang format"
MikeDvorskiy Feb 28, 2025
ee796a6
[oneDPL][ranges][zip_view][tests] + removed unused code.
MikeDvorskiy Feb 28, 2025
815378a
[oneDPL][ranges][zip_view][tests] + test cases with zip_view (and dpc…
MikeDvorskiy Mar 3, 2025
5a0cce2
[oneDPL][ranges][zip_view] iterator_type -> iterators_type
MikeDvorskiy Mar 3, 2025
a4fe06e
[oneDPL][tuple] + clang format
MikeDvorskiy Mar 3, 2025
ffe99b7
[oneDPL][ranges][zip_view] + clang format
MikeDvorskiy Mar 3, 2025
7f9f56b
[oneDPL][ranges][zip_view][test] + a test case for a device policy
MikeDvorskiy Mar 11, 2025
1276333
[oneDPL][ranges][zip_view][test] + sharing alias typel_type for sever…
MikeDvorskiy Mar 10, 2025
71b8c91
Revert "[oneDPL][ranges][zip_view][test] + sharing alias typel_type f…
MikeDvorskiy Mar 10, 2025
6b49fc7
[oneDPL][ranges][zip_view] + fix "return" for __apply_to_tuples
MikeDvorskiy Mar 10, 2025
4ccc238
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Mar 10, 2025
8485eff
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Mar 10, 2025
d1c8386
[oneDPL][ranges][zip_view] + alias __iterators_type unification
MikeDvorskiy Mar 10, 2025
c9e5b94
Revert "[oneDPL][ranges][zip_view] + alias __iterators_type unification"
MikeDvorskiy Mar 10, 2025
69a4973
[oneDPL][ranges][zip_view] + check trivially copyability
MikeDvorskiy Apr 9, 2025
a3d1beb
[onedpl][ranges][tests] + fixes in test_dangling_pointers_arg_<x> fun…
MikeDvorskiy Jan 28, 2026
b3dd586
[onedpl][ranges][tests] removed unused type
MikeDvorskiy Jan 28, 2026
318e705
[onedpl][ranges][zip_view] changed __gen_lambda lambda by a structure…
MikeDvorskiy Jan 28, 2026
eb953d1
[onedpl][tests] removed redundant ;
MikeDvorskiy Jan 29, 2026
8289152
[onedpl][tests] removed unused variable and type
MikeDvorskiy Jan 29, 2026
3384d78
[onedpl][tests] the code re-factored: Checking the dangling iterators…
MikeDvorskiy Jan 29, 2026
fe831e1
[onedpl][tests] + [[maybe_unused]]
MikeDvorskiy Jan 29, 2026
a7eabf9
[onedpl][tests][zip_view] + assert
MikeDvorskiy Jan 30, 2026
9689939
[onedpl][tests][zip_view] suppressed Warray-bounds, because it is a f…
MikeDvorskiy Jan 30, 2026
b564767
[onedpl][tests] removed unused type
MikeDvorskiy Jan 30, 2026
3216f7c
[onedpl][tests][zip_view] "unreachable code" warning suppressed (relv…
MikeDvorskiy Jan 30, 2026
c459337
[onedpl][ranges][zip_view] + fix an access mode in zip_view class (fo…
MikeDvorskiy Jan 30, 2026
f5460bc
[onedpl][tests][zip_view] renamed a variable because a warning (windo…
MikeDvorskiy Feb 2, 2026
fa44a64
[onedpl][tests][zip_view] a call dpl_ranges::stable_sort with DPCPP …
MikeDvorskiy Feb 3, 2026
6891b13
[onedpl][tests][zip_view][ci] -ftemplate-backtrace-limit=0
MikeDvorskiy Feb 3, 2026
f1d1406
[onedpl][tests][zip_view][ci] removed "-ftemplate-backtrace-limit=0",…
MikeDvorskiy Feb 3, 2026
ac196bb
[onedpl][tests][zip_view] + #define _USE_STD_VECTOR_ALGORITHMS 0
MikeDvorskiy Feb 4, 2026
af41cbf
[onedpl][tests][zip_view] @ #define _USE_STD_VECTOR_ALGORITHMS 0
MikeDvorskiy Feb 4, 2026
1d13b75
[onedpl][zip_view] + friend class iterator<!_Const>; (_MSC_VER)
MikeDvorskiy Feb 4, 2026
af9a4d8
[onedpl][zip_view] C++ access mode fixes
MikeDvorskiy Feb 5, 2026
403bcb8
[onedpl][zip_view] C++ access mode changes
MikeDvorskiy Feb 6, 2026
ed79b70
[onedpl][zip_view] C++ access mode changes 2
MikeDvorskiy Feb 9, 2026
71980b4
[onedpl][zip_view][tests] static_assert(std::ranges::common_range<Vi…
MikeDvorskiy Feb 9, 2026
10a16e9
[onedpl][zip_view][tuple] tuple& => const tuple& in operator=(const t…
MikeDvorskiy Feb 10, 2026
2762f68
[onedpl][zip_view][tests] #define _USE_STD_VECTOR_ALGORITHMS 0
MikeDvorskiy Feb 10, 2026
603ebd2
Update include/oneapi/dpl/pstl/algorithm_impl.h
MikeDvorskiy Feb 10, 2026
5c69b47
Update test/parallel_api/ranges/range.zip/sentinel/zip_view.minus.pas…
MikeDvorskiy Feb 11, 2026
2e47ba1
[onedpl][zip_view][tests] + typo fix
MikeDvorskiy Feb 11, 2026
babebe5
[onedpl][zip_view][tests] + a typo fix
MikeDvorskiy Feb 11, 2026
ca17932
[onedpl][zip_view] removed unnecessary #include <vector>
MikeDvorskiy Feb 11, 2026
a29971c
[onedpl][zip_view] + #include <cstdlib> because std::abs is used in …
MikeDvorskiy Feb 11, 2026
e4e2dac
+fix re-basing artefacts
MikeDvorskiy Feb 11, 2026
27ceaba
[onedpl][zip_view] moved one::dpl::ranges::zip_view to one::dpl::exp…
MikeDvorskiy Feb 13, 2026
8a18dc4
[onedpl][zip_view] fixing "one::dpl::ranges::zip_view to one::dpl::e…
MikeDvorskiy Feb 16, 2026
b0fd57d
[onedpl][zip_view] fixing namespace error
MikeDvorskiy Feb 16, 2026
88cb4c3
[onedpl][zip_view] fixing a namespace error
MikeDvorskiy Feb 16, 2026
205bace
[onedpl][zip_view] + a minor fix
MikeDvorskiy Feb 16, 2026
ab22cd2
[onedpl][zip_view] + #define _USE_STD_VECTOR_ALGORITHMS 0
MikeDvorskiy Feb 16, 2026
f09d0c3
[onedpl][zip_view][test] + a minor scope resolution fix
MikeDvorskiy Feb 16, 2026
7c375cb
[onedpl][zip_view] trying moving some internal methods to a private s…
MikeDvorskiy Feb 18, 2026
e6179ac
[onedpl][zip_view] + clang format
MikeDvorskiy Feb 18, 2026
f9e5786
[onedpl][zip_view] + clang format, change in a comment
MikeDvorskiy Feb 18, 2026
550b6ca
[onedpl][ranges][zip_view] removed static for __apply_to_tuple_impl
MikeDvorskiy Feb 18, 2026
31cec14
[onedpl][ranges][zip_view] access modes: a workaround for CL compiler
MikeDvorskiy Feb 20, 2026
adb0bb7
[onedpl][zip_view] + clang format
MikeDvorskiy Feb 20, 2026
f58e343
[onedpl][ranges][zip_view] a comment
MikeDvorskiy Feb 20, 2026
93b24ea
[onedpl][ranges][zip_view] + base() method
MikeDvorskiy Feb 20, 2026
623eb99
[onedpl][zip_view] + clang format
MikeDvorskiy Feb 20, 2026
09643ac
Revert "[onedpl][zip_view] + clang format"
MikeDvorskiy Feb 25, 2026
1843b74
Removed commit artifacts (build files)
MikeDvorskiy Feb 25, 2026
026e3e4
Reverted "clang format changes" for this file.
MikeDvorskiy Feb 25, 2026
d6060f7
[onedpl][zip_view] EOL => LF
MikeDvorskiy Feb 26, 2026
cc6dd7d
[onedpl][ranges][zip_view] a minor change in __apply_to_tuple(..)
MikeDvorskiy Feb 26, 2026
aaab7b0
[onedpl][ranges][zip_view] + std::forward<decltype(__args)>(__args)...
MikeDvorskiy Feb 26, 2026
69dd42b
[onedpl][ranges][zip_view] + const _Views within "end() const" version
MikeDvorskiy Mar 2, 2026
3827918
[onedpl][ranges][zip_view] + __compare_equal(const iterator& __y
MikeDvorskiy Mar 2, 2026
b448cd1
[onedpl][ranges][zip_view][test] + minor fixes
MikeDvorskiy Mar 2, 2026
bc25a16
[onedpl][ranges][zip_view][test] + aliases for input and output itera…
MikeDvorskiy Mar 2, 2026
c90db99
[onedpl][ranges][zip_view][test] + an artifact removed
MikeDvorskiy Mar 2, 2026
009a1d2
Update include/oneapi/dpl/pstl/ranges_defs.h
MikeDvorskiy Mar 2, 2026
be91dc0
[onedpl][ranges][zip_view][test] removed the duplicated macro TEST_CO…
MikeDvorskiy Mar 3, 2026
43c0e63
[onedpl][ranges][zip_view][test] #if TEST_STD_VER < 17 => #if TEST_S…
MikeDvorskiy Mar 3, 2026
6c8ec0b
[onedpl][ranges][zip_view] arranged "struct zip_fn" according to std:…
MikeDvorskiy Mar 3, 2026
04eea66
[onedpl][ranges][zip_view][test] + test_iterators_cpp17.h, keeping te…
MikeDvorskiy Mar 3, 2026
767b1ec
[onedpl][ranges][zip_view][test] #include "support/test_iterators.h" …
MikeDvorskiy Mar 3, 2026
677da4a
[onedpl][ranges][zip_view] a fix: + const version of operator= for s…
MikeDvorskiy Mar 4, 2026
20109d0
[onedpl][ranges][zip_view][test] + checking const assignment operator
MikeDvorskiy Mar 4, 2026
f7c1cb7
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Mar 5, 2026
f9bfe6e
[onedpl][ranges][zip_view][test] + _ONEDPL_CPP20_OWNING_VIEW_PRESENT;…
MikeDvorskiy Mar 5, 2026
e16c6d7
[onedpl][ranges][zip_view][test] + _ONEDPL_CPP20_IN_OUT_ITERATOR_BROKEN
MikeDvorskiy Mar 6, 2026
c36ba42
Update test_iterators_cpp17.h - fix a typo
MikeDvorskiy Mar 10, 2026
bf08c15
[onedpl][zip_view] Uglification the uniglified names in zip_view_impl.h
MikeDvorskiy Mar 10, 2026
f7d37c2
[onedpl][zip_view] "<class' -> "<typename"
MikeDvorskiy Mar 10, 2026
86a2399
Update include/oneapi/dpl/pstl/tuple_impl.h
MikeDvorskiy Mar 10, 2026
cb70fce
Update zip_view_impl.h
MikeDvorskiy Mar 12, 2026
8827f93
fix floating point zip_view test issues (#2608)
danhoeflinger Mar 12, 2026
43b4ebf
[oneDPL][zip_view] +fixes in "zip_view::end" methods
MikeDvorskiy Mar 12, 2026
ddb3ec1
Update include/oneapi/dpl/pstl/zip_view_impl.h
MikeDvorskiy Mar 12, 2026
905148d
Update zip_view_impl.h
MikeDvorskiy Mar 12, 2026
cadfca4
Update zip_view_impl.h
MikeDvorskiy Mar 12, 2026
14faf74
Update zip_view_impl.h
MikeDvorskiy Mar 12, 2026
680564f
Update zip_view_impl.h
MikeDvorskiy Mar 12, 2026
a9c5288
Update zip_view_impl.h
MikeDvorskiy Mar 12, 2026
3de181a
Update zip_view_impl.h
MikeDvorskiy Mar 12, 2026
789f1d7
Prototype __tuple_apply
kboyarinov Mar 12, 2026
546b2f3
Fix typo
kboyarinov Mar 12, 2026
1d4c9ed
__tuples_apply -> __tuples_for_each
kboyarinov Mar 16, 2026
04b1e78
Merge remote-tracking branch 'origin/main' into dev/kboyarinov/zip_vi…
kboyarinov Mar 18, 2026
2754e5f
Fix compilation
kboyarinov Mar 18, 2026
741eed5
Make clang_format happy
kboyarinov Mar 18, 2026
fcffd26
Rework __tuple_apply overload
kboyarinov Mar 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 67 additions & 43 deletions include/oneapi/dpl/pstl/zip_view_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,46 +78,60 @@ concept __simple_view = std::ranges::view<_R> && std::ranges::range<const _R> &&

template <typename _F, typename _Tuple, std::size_t... _Ip>
void
__apply_to_tuple_impl(_F __f, _Tuple& __t, std::index_sequence<_Ip...>)
__tuple_for_each_impl(_F __f, _Tuple& __t, std::index_sequence<_Ip...>)
{
(void(__f(std::get<_Ip>(__t))), ...);
}

template <typename _ReturnAdapter, typename _F, typename _Tuple, std::size_t... _Ip>
template <typename _F, typename _Tuple, std::size_t... _Ip>
decltype(auto)
__apply_to_tuple_impl(_ReturnAdapter __tr, _F __f, _Tuple& __t, std::index_sequence<_Ip...>)
__tuple_apply_impl(_F __f, _Tuple& __t, std::index_sequence<_Ip...>)
{
return __tr(__f(std::get<_Ip>(__t))...);
return __f(std::get<_Ip>(__t)...);
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this overload is confusing. It names the "adaptor" function applied to all elements of the tuple as __f which is the name used in the nearby context for the function applied to each element of the tuple. It also only serves one caller (creation of zip_iterator). Either we should just pass the identity in as the per element function and get rid of this overload, or it should be named better to differentiate it from the rest of the context.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In fact, this function is a direct analogue of std::apply. I agree that renaming _F to _Adaptor makes sense to align with the second overload.
We could also use a single __tuple_apply_impl with two functions and pass an identity lambda from __tuple_apply, if that makes the intent clearer from your point of view.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renamed _F to _Adaptor and reused another overload with identity lambda in __tuple_apply with 2 arguments


template <typename _F, typename _Tuple1, typename _Tuple2, std::size_t... _Ip>
void
__apply_to_tuples_impl(_F __f, _Tuple1& __t1, _Tuple2& __t2, std::index_sequence<_Ip...>)
template <typename _Adaptor, typename _F, typename _Tuple, std::size_t... _Ip>
decltype(auto)
__tuple_apply_impl(_Adaptor __adaptor, _F __f, _Tuple& __t, std::index_sequence<_Ip...>)
{
(__f(std::get<_Ip>(__t1), std::get<_Ip>(__t2)), ...);
return __adaptor(__f(std::get<_Ip>(__t))...);
Comment thread
danhoeflinger marked this conversation as resolved.
}

template <typename _F, typename _Tuple>
void
__apply_to_tuple(_F __f, _Tuple& __t)
__tuple_for_each(_F __f, _Tuple& __t)
{
__tuple_for_each_impl(std::move(__f), __t, std::make_index_sequence<std::tuple_size_v<_Tuple>>());
}

template <typename _F, typename _Tuple>
decltype(auto)
__tuple_apply(_F __f, _Tuple& __t)
{
__apply_to_tuple_impl(__f, __t, std::make_index_sequence<std::tuple_size_v<_Tuple>>{});
return __tuple_apply_impl(std::move(__f), __t, std::make_index_sequence<std::tuple_size_v<_Tuple>>());
}

template <typename _F, typename _Tuple, typename _ReturnAdapter>
template <typename _Adaptor, typename _F, typename _Tuple>
decltype(auto)
__apply_to_tuple(_F __f, _Tuple& __t, _ReturnAdapter __tr)
__tuple_apply(_Adaptor __adaptor, _F __f, _Tuple& __t)
{
return __apply_to_tuple_impl(__tr, __f, __t, std::make_index_sequence<std::tuple_size_v<_Tuple>>{});
return __tuple_apply_impl(std::move(__adaptor), std::move(__f), __t,
std::make_index_sequence<std::tuple_size_v<_Tuple>>());
}

template <typename _F, typename _Tuple1, typename _Tuple2, std::size_t... _Ip>
void
__tuples_for_each_impl(_F __f, _Tuple1& __t1, _Tuple2& __t2, std::index_sequence<_Ip...>)
{
(__f(std::get<_Ip>(__t1), std::get<_Ip>(__t2)), ...);
}

template <typename _F, typename _Tuple1, typename _Tuple2>
void
__apply_to_tuples(_F __f, _Tuple1& __t1, _Tuple2& __t2)
__tuples_for_each(_F __f, _Tuple1& __t1, _Tuple2& __t2)
{
static_assert(std::tuple_size_v<_Tuple1> == std::tuple_size_v<_Tuple2>);

__apply_to_tuples_impl(__f, __t1, __t2, std::make_index_sequence<std::tuple_size_v<_Tuple1>>{});
__tuples_for_each_impl(__f, __t1, __t2, std::make_index_sequence<std::tuple_size_v<_Tuple1>>{});
}

template <std::ranges::input_range... _Views>
Expand Down Expand Up @@ -182,19 +196,21 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
template <typename... _Iterators>
operator oneapi::dpl::zip_iterator<_Iterators...>() const
{
auto __adaptor = [](auto&&... __iterators) -> decltype(auto) {
auto __make_zip = [](auto&&... __iterators) -> decltype(auto) {
return oneapi::dpl::make_zip_iterator(std::forward<decltype(__iterators)>(__iterators)...);
};
return __internal::__apply_to_tuple([](auto __it) -> decltype(auto) { return __it; }, __current, __adaptor);
return __internal::__tuple_apply(__make_zip, __current);
}
Comment thread
kboyarinov marked this conversation as resolved.

constexpr decltype(auto)
operator*() const
{
auto __tr = [](auto&&... __args) -> decltype(auto) {
auto __dereference = [](auto& __it) -> decltype(auto) { return *__it; };

auto __make_ref = [](auto&&... __args) -> decltype(auto) {
return __reference_type(std::forward<decltype(__args)>(__args)...);
};
return __internal::__apply_to_tuple([](auto& __it) -> decltype(auto) { return *__it; }, __current, __tr);
return __internal::__tuple_apply(__make_ref, __dereference, __current);
}

constexpr decltype(auto)
Expand All @@ -207,7 +223,8 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
constexpr iterator&
operator++()
{
__internal::__apply_to_tuple([](auto& __it) -> decltype(auto) { return ++__it; }, __current);
auto __increment = [](auto& __it) { ++__it; };
__internal::__tuple_for_each(__increment, __current);
return *this;
}

Expand All @@ -230,7 +247,8 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
operator--()
requires __internal::__all_bidirectional<_Const, _Views...>
{
__internal::__apply_to_tuple([](auto& __it) { return --__it; }, __current);
auto __decrement = [](auto& __it) { --__it; };
__internal::__tuple_for_each(__decrement, __current);
return *this;
}

Expand All @@ -247,15 +265,17 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
operator+=(difference_type __n)
requires __internal::__all_random_access<_Const, _Views...>
{
__internal::__apply_to_tuple([__n](auto& __it) { return __it += __n; }, __current);
auto __increment_n = [__n](auto& __it) { __it += __n; };
__internal::__tuple_for_each(__increment_n, __current);
return *this;
}

constexpr iterator&
operator-=(difference_type __n)
requires __internal::__all_random_access<_Const, _Views...>
{
__internal::__apply_to_tuple([__n](auto& __it) { return __it -= __n; }, __current);
auto __decrement_n = [__n](auto& __it) { __it -= __n; };
__internal::__tuple_for_each(__decrement_n, __current);
return *this;
}

Expand Down Expand Up @@ -366,10 +386,10 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
std::ranges::range_rvalue_reference_t<__internal::__maybe_const<_Const, _Views>>> &&
...))
{
auto __tr = [](auto&&... __args) -> decltype(auto) {
auto __make_rvalue_reference = [](auto&&... __args) -> decltype(auto) {
return __rvalue_reference_type(std::forward<decltype(__args)>(__args)...);
};
return __internal::__apply_to_tuple(std::ranges::iter_move, __x.__current, __tr);
return __internal::__tuple_apply(__make_rvalue_reference, std::ranges::iter_move, __x.__current);
}

friend constexpr void
Expand All @@ -381,7 +401,7 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
requires(std::indirectly_swappable<std::ranges::iterator_t<__internal::__maybe_const<_Const, _Views>>> &&
...)
{
__internal::__apply_to_tuples(std::ranges::iter_swap, __x.__current, __y.__current);
__internal::__tuples_for_each(std::ranges::iter_swap, __x.__current, __y.__current);
}

private:
Expand Down Expand Up @@ -447,21 +467,21 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
requires(!(__internal::__simple_view<_Views> && ...))
{
using __iterators_type = __tuple_type<std::ranges::iterator_t<__internal::__maybe_const<false, _Views>>...>;
auto __tr = [](auto&&... __args) {
auto __make_iterator = [](auto&&... __args) {
return iterator<false>(__iterators_type(std::forward<decltype(__args)>(__args)...));
};
return __internal::__apply_to_tuple(std::ranges::begin, __views, __tr);
return __internal::__tuple_apply(__make_iterator, std::ranges::begin, __views);
}

constexpr auto
begin() const
requires(std::ranges::range<const _Views> && ...)
{
using __iterators_type = __tuple_type<std::ranges::iterator_t<__internal::__maybe_const<true, _Views>>...>;
auto __tr = [](auto&&... __args) {
auto __make_iterator = [](auto&&... __args) {
return iterator<true>(__iterators_type(std::forward<decltype(__args)>(__args)...));
};
return __internal::__apply_to_tuple(std::ranges::begin, __views, __tr);
return __internal::__tuple_apply(__make_iterator, std::ranges::begin, __views);
}

constexpr auto
Expand All @@ -470,8 +490,10 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
{
if constexpr (!__internal::__zip_is_common<_Views...>)
{
auto __tr = [](auto&&... __args) { return sentinel<false>(std::forward<decltype(__args)>(__args)...); };
return __internal::__apply_to_tuple(std::ranges::end, __views, __tr);
auto __make_sentinel = [](auto&&... __args) {
return sentinel<false>(std::forward<decltype(__args)>(__args)...);
};
return __internal::__tuple_apply(__make_sentinel, std::ranges::end, __views);
}
else if constexpr ((std::ranges::random_access_range<_Views> && ...))
{
Expand All @@ -482,10 +504,10 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
else
{
using __iterators_type = __tuple_type<std::ranges::iterator_t<__internal::__maybe_const<false, _Views>>...>;
auto __tr = [](auto&&... __args) {
auto __make_iterator = [](auto&&... __args) {
return iterator<false>(__iterators_type(std::forward<decltype(__args)>(__args)...));
};
return __internal::__apply_to_tuple(std::ranges::end, __views, __tr);
return __internal::__tuple_apply(__make_iterator, std::ranges::end, __views);
}
}

Expand All @@ -495,8 +517,10 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
{
if constexpr (!__internal::__zip_is_common<const _Views...>)
{
auto __tr = [](auto&&... __args) { return sentinel<true>(std::forward<decltype(__args)>(__args)...); };
return __internal::__apply_to_tuple(std::ranges::end, __views, __tr);
auto __make_sentinel = [](auto&&... __args) {
return sentinel<true>(std::forward<decltype(__args)>(__args)...);
};
return __internal::__tuple_apply(__make_sentinel, std::ranges::end, __views);
}
else if constexpr ((std::ranges::random_access_range<const _Views> && ...))
{
Expand All @@ -507,35 +531,35 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
else
{
using __iterators_type = __tuple_type<std::ranges::iterator_t<__internal::__maybe_const<true, _Views>>...>;
auto __tr = [](auto&&... __args) {
auto __make_iterator = [](auto&&... __args) {
return iterator<true>(__iterators_type(std::forward<decltype(__args)>(__args)...));
};
return __internal::__apply_to_tuple(std::ranges::end, __views, __tr);
return __internal::__tuple_apply(__make_iterator, std::ranges::end, __views);
}
}

constexpr auto
size()
requires(std::ranges::sized_range<_Views> && ...)
{
auto __tr = [](auto... __args) {
auto __calc_min = [](auto... __args) {
using _CT = std::make_unsigned_t<std::common_type_t<decltype(__args)...>>;
return std::ranges::min({_CT(__args)...});
};

return __internal::__apply_to_tuple(std::ranges::size, __views, __tr);
return __internal::__tuple_apply(__calc_min, std::ranges::size, __views);
}

constexpr auto
size() const
requires(std::ranges::sized_range<const _Views> && ...)
{
auto __tr = [](auto... __args) {
auto __calc_min = [](auto... __args) {
using _CT = std::make_unsigned_t<std::common_type_t<decltype(__args)...>>;
return std::ranges::min({_CT(__args)...});
};

return __internal::__apply_to_tuple(std::ranges::size, __views, __tr);
return __internal::__tuple_apply(__calc_min, std::ranges::size, __views);
}

const __tuple_type<_Views...>&
Expand Down
Loading