| 200 | |
| 201 | template <template <typename...> class Map, typename Value, typename Allocator, typename... Args> |
| 202 | bool OrderedSetWrapper<Map, Value, Allocator, Args...>::addBack(Value const& v) { |
| 203 | auto i = m_map.find(v); |
| 204 | if (i != m_map.end()) { |
| 205 | m_order.splice(m_order.end(), m_order, i->second); |
| 206 | return false; |
| 207 | } else { |
| 208 | iterator orderIt = m_order.insert(m_order.end(), v); |
| 209 | m_map.insert(typename MapType::value_type(std::cref(*orderIt), orderIt)); |
| 210 | return true; |
| 211 | } |
| 212 | } |
| 213 | |
| 214 | template <template <typename...> class Map, typename Value, typename Allocator, typename... Args> |
| 215 | bool OrderedSetWrapper<Map, Value, Allocator, Args...>::addFront(Value const& v) { |