@@ -170,7 +170,8 @@ constexpr auto with_mask(T const mask, std::array<T, S> const &keys)
170
170
}
171
171
172
172
template <typename T, typename V, std::size_t S>
173
- constexpr auto get_keys (std::array<entry<T, V>, S> const &entries) {
173
+ constexpr auto get_keys (std::array<entry<T, V>, S> const &entries)
174
+ -> std::array<detail::raw_integral_t<T>, S> {
174
175
using raw_t = detail::raw_integral_t <T>;
175
176
std::array<raw_t , S> new_keys{};
176
177
@@ -373,7 +374,8 @@ struct pseudo_pext_lookup {
373
374
return empty_impl<key_type, value_type, default_value>{};
374
375
375
376
} else if constexpr (use_indirect_strategy) {
376
- constexpr auto storage = [&]() {
377
+ constexpr auto storage =
378
+ [&]() -> std::remove_const_t <decltype (input.entries )> {
377
379
auto s = input.entries ;
378
380
379
381
// sort by the hashed key to group all the buckets together
@@ -416,8 +418,9 @@ struct pseudo_pext_lookup {
416
418
return s;
417
419
}();
418
420
419
- constexpr auto lookup_table = [&]() {
420
- using lookup_idx_t = detail::uint_for_<storage.size ()>;
421
+ using lookup_idx_t = detail::uint_for_<storage.size ()>;
422
+ constexpr auto lookup_table =
423
+ [&]() -> std::array<lookup_idx_t , lookup_table_size> {
421
424
std::array<lookup_idx_t , lookup_table_size> t{};
422
425
423
426
t.fill (0 );
@@ -442,7 +445,9 @@ struct pseudo_pext_lookup {
442
445
p, lookup_table, storage};
443
446
444
447
} else {
445
- constexpr auto storage = [&]() {
448
+ constexpr auto storage =
449
+ [&]() -> std::array<entry<raw_key_type, value_type>,
450
+ lookup_table_size> {
446
451
std::array<entry<raw_key_type, value_type>, lookup_table_size>
447
452
s{};
448
453
0 commit comments