Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cassert>
- #include <utility>
- namespace codereview
- {
- template <typename DictT>
- void update(DictT& dst, const DictT& src)
- {
- for (const auto& [key, value] : src) {
- dst.insert_or_assign(key, value);
- }
- }
- template <typename DictT>
- void update(DictT& dst, DictT&& src) noexcept
- {
- // Equal allocators are a precondition for splicing nodes
- assert(src.get_allocator() == dst.get_allocator());
- dst.merge(src);
- while (!src.empty()) {
- auto node = src.extract(src.cbegin());
- dst.extract(node.key());
- dst.insert(std::move(node));
- }
- }
- } // namespace codereview
Add Comment
Please, Sign In to add comment