|
|
@@ -51,7 +51,7 @@ public:
|
|
|
using post_iterator = trie_iterator<self_t, local_reverse_iterator>;
|
|
|
using const_post_iterator = trie_iterator<self_t const, local_const_reverse_iterator>;
|
|
|
using reverse_iterator = trie_reverse_iterator<self_t, local_reverse_iterator>;
|
|
|
- using const_reverse_iterator = trie_reverse_iterator<self_t const, local_const_reverse_iterator>;
|
|
|
+ using const_reverse_iterator = trie_reverse_iterator<self_t const, local_const_reverse_iterator>;
|
|
|
private:
|
|
|
using impl_iterator = detail::trie_iterator_base<self_t, local_iterator>;
|
|
|
using impl_const_iterator = detail::trie_iterator_base<self_t, local_const_iterator>;
|
|
|
@@ -77,7 +77,7 @@ public:
|
|
|
return *emplace(key).first.stk.top();
|
|
|
}
|
|
|
self_t & operator[](std::initializer_list<key_type> keys) {
|
|
|
- return operator[]<std::initializer_list<key_type>>(keys);
|
|
|
+ return operator[]<>(keys);
|
|
|
}
|
|
|
|
|
|
template <typename KS>
|
|
|
@@ -148,18 +148,21 @@ public:
|
|
|
void clear();
|
|
|
private:
|
|
|
void drop(iterator it);
|
|
|
+
|
|
|
template <typename Iter, typename Trie, typename KS>
|
|
|
friend Iter detail::find_impl(Trie * tr, KS const & keys);
|
|
|
template <typename Iter, typename Trie>
|
|
|
static Iter find_impl(Trie * tr, std::initializer_list<key_type> keys) {
|
|
|
- return detail::find_impl<Iter, Trie, std::initializer_list<key_type>>(tr, keys);
|
|
|
+ return detail::find_impl<Iter>(tr, keys);
|
|
|
}
|
|
|
+
|
|
|
template <typename KS, typename... Args>
|
|
|
std::pair<impl_iterator, bool> emplace_impl(KS && keys, Args &&... args);
|
|
|
template <typename... Args>
|
|
|
- std::pair<impl_iterator, bool> emplace_impl(std::initializer_list<key_type> key, Args &&... args) {
|
|
|
- return emplace_impl<std::initializer_list<key_type>>(std::move(key), std::forward<Args>(args)...);
|
|
|
+ std::pair<impl_iterator, bool> emplace_impl(std::initializer_list<key_type> keys, Args &&... args) {
|
|
|
+ return emplace_impl<std::initializer_list<key_type>>(std::move(keys), std::forward<Args>(args)...);
|
|
|
}
|
|
|
+
|
|
|
template <typename Key>
|
|
|
void insert_impl(impl_iterator & out, bool & create, Key && key);
|
|
|
|