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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|needs-reduction             |rejects-valid

--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
template <typename> struct remove_reference;
template <typename _Tp> struct remove_reference<_Tp &> {
  typedef _Tp type;
};
template <typename _Tp> typename remove_reference<_Tp>::type &&move(_Tp &&);
template <typename _T2> struct pair {
  _T2 second;
};
struct Foo {
  Foo();
  Foo(const Foo &);
  Foo(Foo &&) = delete;
};
struct _Node_const_iterator {
  const pair<Foo> *operator->();
};
template <typename, typename, typename = int> struct unordered_map {
  _Node_const_iterator find(int);
};
bool b;
template <template <class, class, class> class Map, typename... Args>
void getMapEntry(Map<Args...> map, int key, Foo defval) {
  auto i = map.find(key);
  b ? i->second : move(defval);
}
int main() {
  unordered_map<int, int> map;
  getMapEntry(map, 3, {});
}

Reply via email to