https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108158

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marxin at gcc dot gnu.org

--- Comment #4 from Martin Liška <marxin at gcc dot gnu.org> ---
I've just reduced that into:

$ cat pr108158.ii
template <class T, int N> struct carray {
  T data_[N]{};
  constexpr T operator[](long index) const { return data_[index]; }
};
struct seed_or_index {
private:
  long value_ = 0;
};
template <int M> struct pmh_tables {
  carray<seed_or_index, M> first_table_;
  template <typename KeyType, typename HasherType>
  constexpr void lookup(KeyType, HasherType) const {
    first_table_[0];
  }
};
template <int N> struct unordered_set {
  int equal_;
  carray<int, N> keys_;
  pmh_tables<N> tables_;
  constexpr unordered_set() : equal_{} {}
  template <class KeyType, class Hasher>
  constexpr auto lookup(KeyType key, Hasher hash) const {
    tables_.lookup(key, hash);
    return keys_;
  }
};
constexpr unordered_set<3> ze_set;
constexpr auto nocount = ze_set.lookup(4, int());

Reply via email to