Existe algum motivo para usar std :: map :: emplace () em vez de try_emplace () em C ++ 1z?

No C ++ 17,std::map estd::unordered_map obteve um novo modelo de função de membro:try_emplace(). Esta nova adição, proposta emn4279, comporta-se de maneira semelhante aemplace(), mas tem as seguintes vantagens:

try_emplace() não sai dos argumentos rvalue se a inserção não ocorrer. Isso é útil ao manipular mapas cujos valores são do tipo somente movimentação, comostd::unique_ptr.try_emplace() trata a chave e os argumentos para omapped_type separadamente, o que o torna um pouco mais intuitivo do que os mutadores genéricos que são expressos em termos devalue_type (qual éstd::pair)

Dadas as vantagens acima, você usariaemplace() do C ++ 11 em vez detry_emplace() de C ++ 1z ao escrever código somente em C ++ 1z?

questionAnswers(3)

yourAnswerToTheQuestion