| 532 | |
| 533 | template <template <typename...> class Map, typename Key, typename Value, typename Allocator, typename... MapArgs> |
| 534 | auto OrderedMapWrapper<Map, Key, Value, Allocator, MapArgs...>::takeFirst() -> value_type { |
| 535 | if (empty()) |
| 536 | throw MapException("OrderedMap::takeFirst() called on empty OrderedMap"); |
| 537 | |
| 538 | iterator i = m_order.begin(); |
| 539 | m_map.remove(i->first); |
| 540 | value_type v = *i; |
| 541 | m_order.erase(i); |
| 542 | return v; |
| 543 | } |
| 544 | |
| 545 | template <template <typename...> class Map, typename Key, typename Value, typename Allocator, typename... MapArgs> |
| 546 | void OrderedMapWrapper<Map, Key, Value, Allocator, MapArgs...>::removeFirst() { |