|
31 | 31 | #include <limits> |
32 | 32 |
|
33 | 33 | namespace cuco { |
34 | | -template <typename SizeType, std::size_t N> |
| 34 | +template <typename SizeType, std::size_t N = dynamic_extent> |
35 | 35 | struct valid_extent { |
36 | 36 | using value_type = SizeType; ///< Extent value type |
37 | 37 |
|
@@ -112,19 +112,6 @@ struct valid_extent<SizeType, dynamic_extent> : cuco::utility::fast_int<SizeType |
112 | 112 | friend auto constexpr make_valid_extent(extent<SizeType_, N_> ext); |
113 | 113 | }; |
114 | 114 |
|
115 | | -namespace detail { |
116 | | - |
117 | | -template <typename...> |
118 | | -struct is_bucket_extent : cuda::std::false_type {}; |
119 | | - |
120 | | -template <typename SizeType, std::size_t N> |
121 | | -struct is_bucket_extent<valid_extent<SizeType, N>> : cuda::std::true_type {}; |
122 | | - |
123 | | -template <typename T> |
124 | | -inline constexpr bool is_bucket_extent_v = is_bucket_extent<T>::value; |
125 | | - |
126 | | -} // namespace detail |
127 | | - |
128 | 115 | // Primary implementation for fixed CGSize and BucketSize |
129 | 116 | template <int32_t CGSize, int32_t BucketSize, typename SizeType, std::size_t N> |
130 | 117 | [[nodiscard]] auto constexpr make_valid_extent(extent<SizeType, N> ext) |
@@ -225,66 +212,4 @@ template <template <typename, typename> class ProbingScheme, typename Storage, t |
225 | 212 | return make_valid_extent<ProbeType, Storage, SizeType>(size); |
226 | 213 | } |
227 | 214 |
|
228 | | -// make_bucket_extent implementations - aliases for make_valid_extent |
229 | | - |
230 | | -// Primary implementation for fixed CGSize and BucketSize |
231 | | -template <int32_t CGSize, int32_t BucketSize, typename SizeType, std::size_t N> |
232 | | -[[nodiscard]] auto constexpr make_bucket_extent(extent<SizeType, N> ext) |
233 | | -{ |
234 | | - return make_valid_extent<CGSize, BucketSize, SizeType, N>(ext); |
235 | | -} |
236 | | - |
237 | | -// Overload for SizeType without extent |
238 | | -template <int32_t CGSize, int32_t BucketSize, typename SizeType> |
239 | | -[[nodiscard]] auto constexpr make_bucket_extent(SizeType size) |
240 | | -{ |
241 | | - return make_valid_extent<CGSize, BucketSize, SizeType>(size); |
242 | | -} |
243 | | - |
244 | | -// Implementation for ProbingScheme and Storage types |
245 | | -template <typename ProbingScheme, typename Storage, typename SizeType, std::size_t N> |
246 | | -[[nodiscard]] auto constexpr make_bucket_extent(extent<SizeType, N> ext) |
247 | | -{ |
248 | | - return make_valid_extent<ProbingScheme, Storage, SizeType, N>(ext); |
249 | | -} |
250 | | - |
251 | | -// Overload for ProbingScheme and Storage with SizeType |
252 | | -template <typename ProbingScheme, typename Storage, typename SizeType> |
253 | | -[[nodiscard]] auto constexpr make_bucket_extent(SizeType size) |
254 | | -{ |
255 | | - return make_valid_extent<ProbingScheme, Storage, SizeType>(size); |
256 | | -} |
257 | | - |
258 | | -// Template template parameter overloads for single-type ProbingScheme |
259 | | -template <template <typename> class ProbingScheme, |
260 | | - typename Storage, |
261 | | - typename SizeType, |
262 | | - std::size_t N> |
263 | | -[[nodiscard]] auto constexpr make_bucket_extent(extent<SizeType, N> ext) |
264 | | -{ |
265 | | - return make_valid_extent<ProbingScheme, Storage, SizeType, N>(ext); |
266 | | -} |
267 | | - |
268 | | -template <template <typename> class ProbingScheme, typename Storage, typename SizeType> |
269 | | -[[nodiscard]] auto constexpr make_bucket_extent(SizeType size) |
270 | | -{ |
271 | | - return make_valid_extent<ProbingScheme, Storage, SizeType>(size); |
272 | | -} |
273 | | - |
274 | | -// Template template parameter overloads for two-type ProbingScheme |
275 | | -template <template <typename, typename> class ProbingScheme, |
276 | | - typename Storage, |
277 | | - typename SizeType, |
278 | | - std::size_t N> |
279 | | -[[nodiscard]] auto constexpr make_bucket_extent(extent<SizeType, N> ext) |
280 | | -{ |
281 | | - return make_valid_extent<ProbingScheme, Storage, SizeType, N>(ext); |
282 | | -} |
283 | | - |
284 | | -template <template <typename, typename> class ProbingScheme, typename Storage, typename SizeType> |
285 | | -[[nodiscard]] auto constexpr make_bucket_extent(SizeType size) |
286 | | -{ |
287 | | - return make_valid_extent<ProbingScheme, Storage, SizeType>(size); |
288 | | -} |
289 | | - |
290 | 215 | } // namespace cuco |
0 commit comments