There's still an issue if you insert something you've searched for first, e.g.:
trie<char16_t> trie;
trie.insert(u"a");
trie.search(u"ab");
trie.insert(u"ab");