Guest User

Untitled

a guest
Nov 23rd, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1. #include <cassert>
  2. #include <utility>
  3.  
  4. namespace codereview
  5. {
  6.  
  7. template <typename DictT>
  8. void update(DictT& dst, const DictT& src)
  9. {
  10. for (const auto& [key, value] : src) {
  11. dst.insert_or_assign(key, value);
  12. }
  13. }
  14.  
  15. template <typename DictT>
  16. void update(DictT& dst, DictT&& src) noexcept
  17. {
  18. // Equal allocators are a precondition for splicing nodes
  19. assert(src.get_allocator() == dst.get_allocator());
  20. dst.merge(src);
  21. while (!src.empty()) {
  22. auto node = src.extract(src.cbegin());
  23. dst.extract(node.key());
  24. dst.insert(std::move(node));
  25. }
  26. }
  27.  
  28. } // namespace codereview
Add Comment
Please, Sign In to add comment