In Item 41 from Effective Modern C++, the following is one of the situations that give a chance for emplacement functions to be more performant than the insertion conterparts:
The container is unlikely to reject the new value as a duplicate
the reason being that, given the arguments to the constructor of the oject whose insertion in the container is attempted, the emplace function will have to construct that object to asses whether it is already present in the container, in which case the construction has been a waste, followed by the unavoidable waste of the desctruction too.
I have already some doubts here. If I was to use the insertion function to avoid this scenario, then I would be constructing the object myself (probably a temporary, passing to its construtor the arguments that I'd pass to the emplacement function), and passing it to the insertion function, and then that temporary, if an equal value was in the container already, would got destroyed.
So I don't see a difference.
Furthermore, the author adds that
Such nodes are created for emplacement functions more often than for insertion functions.
Why in the world should which function I use to insert an object in a container influece if that object is already in the container?