older gcc std::map doesn't have emplace()

see http://stackoverflow.com/questions/24389014/stdmap-emplace-gcc-4-8-2

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44436

I also support ifdef too, that's maybe a better option but this syntax looks better anyway and it's just settings.