Updated interface to use reference.  There was no need to do a copy
Made emplace usage more compatible.  This should now work with gcc as well as clang.