Skip to content

Commit 5309e14

Browse files
committed
Add deduction guide for blocked_range type
1 parent 887e933 commit 5309e14

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

include/oneapi/tbb/blocked_rangeNd.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@ template <typename... Values>
142142
blocked_rangeNd(std::initializer_list<Values>...)
143143
-> blocked_rangeNd<std::common_type_t<Values...>, sizeof...(Values)>;
144144

145+
template <typename... Values>
146+
blocked_rangeNd(blocked_range<Values>...)
147+
-> blocked_rangeNd<std::common_type_t<Values...>, sizeof...(Values)>;
148+
145149
} // namespace d1
146150
} // namespace detail
147151

test/conformance/conformance_blocked_rangeNd.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,8 @@ TEST_CASE("blocked_rangeNd deduction guides") {
283283
std::vector<const unsigned long*> v;
284284
using iterator = typename decltype(v)::iterator;
285285

286+
oneapi::tbb::blocked_range<int> br(0, 100);
287+
286288
oneapi::tbb::blocked_rangeNd r1({v.begin(), v.end()});
287289
static_assert(std::is_same<decltype(r1),
288290
oneapi::tbb::blocked_rangeNd<iterator, 1>>::value);
@@ -295,10 +297,18 @@ TEST_CASE("blocked_rangeNd deduction guides") {
295297
static_assert(std::is_same<decltype(r3),
296298
oneapi::tbb::blocked_rangeNd<int, 4>>::value);
297299

298-
oneapi::tbb::blocked_rangeNd r4(r1);
299-
static_assert(std::is_same<decltype(r4), decltype(r1)>::value);
300+
oneapi::tbb::blocked_rangeNd r4(br);
301+
static_assert(std::is_same<decltype(r4),
302+
oneapi::tbb::blocked_rangeNd<int, 1>>::value);
303+
304+
oneapi::tbb::blocked_rangeNd r5(br, br, br);
305+
static_assert(std::is_same<decltype(r5),
306+
oneapi::tbb::blocked_rangeNd<int, 3>>::value);
307+
308+
oneapi::tbb::blocked_rangeNd rc(r1);
309+
static_assert(std::is_same<decltype(rc), decltype(r1)>::value);
300310

301-
oneapi::tbb::blocked_rangeNd r5(std::move(r2));
302-
static_assert(std::is_same<decltype(r5), decltype(r2)>::value);
311+
oneapi::tbb::blocked_rangeNd rm(std::move(r2));
312+
static_assert(std::is_same<decltype(rm), decltype(r2)>::value);
303313
}
304314
#endif // __TBB_CPP17_DEDUCTION_GUIDES_PRESENT

0 commit comments

Comments
 (0)