#include <string>
#include <map>
#define intint_map std::multimap<int, int>
#define strint_map std::multimap<std::string, int>
#define intstr_map std::multimap<int, std::string>
#define strstr_map std::multimap<std::string, std::string>
int g_the_foo = 0;
int thefoo_rw(int arg = 1)
{
if (arg < 0)
arg = 0;
if (!arg)
arg = 1;
g_the_foo += arg;
return g_the_foo;
}
int main()
{
char buffer[sizeof(intint_map)] = {0};
intint_map &corrupt_map = *(intint_map *)buffer;
intint_map ii; // Set break point at this line.
ii.emplace(0,0); // Set break point at this line.
ii.emplace(1,1);
thefoo_rw(1); // Set break point at this line.
ii.emplace(2,0);
ii.emplace(3,1);
thefoo_rw(1); // Set break point at this line.
ii.emplace(4,0);
ii.emplace(5,1);
ii.emplace(6,0);
ii.emplace(7,1);
thefoo_rw(1); // Set break point at this line.
ii.emplace(85,1234567);
ii.clear();
strint_map si;
thefoo_rw(1); // Set break point at this line.
si.emplace("zero",0);
thefoo_rw(1); // Set break point at this line.
si.emplace("one",1);
si.emplace("two",2);
si.emplace("three",3);
thefoo_rw(1); // Set break point at this line.
si.emplace("four",4);
si.clear();
thefoo_rw(1); // Set break point at this line.
intstr_map is;
thefoo_rw(1); // Set break point at this line.
is.emplace(85,"goofy");
is.emplace(1,"is");
is.emplace(2,"smart");
is.emplace(3,"!!!");
thefoo_rw(1); // Set break point at this line.
is.clear();
thefoo_rw(1); // Set break point at this line.
strstr_map ss;
thefoo_rw(1); // Set break point at this line.
ss.emplace("ciao","hello");
ss.emplace("casa","house");
ss.emplace("gatto","cat");
thefoo_rw(1); // Set break point at this line.
ss.emplace("a Mac..","..is always a Mac!");
ss.clear();
thefoo_rw(1); // Set break point at this line.
return 0;
}