(root)/
gcc-13.2.0/
libstdc++-v3/
testsuite/
23_containers/
map/
modifiers/
insert/
92300.cc
// { dg-do run { target c++17 } }

#include <map>
#include <cstdlib>

bool oom = false;

void* operator new(std::size_t n)
{
  if (oom)
    throw std::bad_alloc();
  return std::malloc(n);
}

void operator delete(void* p) noexcept
{
  std::free(p);
}

void operator delete(void* p, std::size_t) noexcept
{
  std::free(p);
}

int main()
{
  using std::pair;
  std::map<int, int> m;
  int i = 0;
  (void) m[i];
  oom = true;
  m.insert({i, 1});			    // insert(value_type&&)
  m.insert(pair<int, int>(i, 2));	    // insert(Pair&&)
  m.insert(pair<int&, int>(i, 3));	    // insert(Pair&&)
  m.insert(pair<int, long>(i, 4L));	    // insert(Pair&&)
  m.insert(pair<const int, long>(i, 5L));   // insert(Pair&&)
  m.insert(pair<const int&, long>(i, 6L));  // insert(Pair&&)
}