#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()  // Set break point at this line.
{
    intint_map ii;

    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;
}
