Как работает boost :: unordered_map.emplace (Args &&… args)?

Согласно документации it:

Вставляет объект, созданный с помощью аргументы args в контейнере тогда и только тогда, когда в контейнер с эквивалентным ключом.

Но единственные объекты, которые могут быть вставлены в unordered_map, имеют тип std :: pair (потому что и ключ, и значение необходимы для объект, который нужно вставить), который, как известно, принимает конструктор ровно с двумя аргументами. Так почему же он использует вариационную форму функции? Конечно, есть что-то, чего я совершенно не понимаю по этому поводу.

11
задан Mankarse 29 January 2011 в 14:57
поделиться