// PR c++/108158 // { dg-do compile { target c++14 } } template struct carray { T data_[N]{}; constexpr T operator[](long index) const { return data_[index]; } }; struct seed_or_index { private: long value_ = 0; }; template struct pmh_tables { carray first_table_; template constexpr void lookup(KeyType, HasherType) const { first_table_[0]; } }; template struct unordered_set { int equal_; carray keys_; pmh_tables tables_; constexpr unordered_set() : equal_{} {} template 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()); constexpr auto nocount2 = unordered_set<3>{}.lookup(4, int());