avoid std::unordered_set::emplace because GCC 4.6 did not support it