#ifndef ITER_UNIQUE_EVERSEEN_HPP_ #define ITER_UNIQUE_EVERSEEN_HPP_ #include "internal/iterbase.hpp" #include "filter.hpp" #include #include #include #include #include namespace iter { template auto unique_everseen(Container&& container) { using elem_type = impl::iterator_deref; auto func = [elem_seen = std::unordered_set>()]( const elem_type& e) mutable { return elem_seen.insert(e).second; }; return filter(func, std::forward(container)); } template auto unique_everseen(std::initializer_list il) { auto func = [elem_seen = std::unordered_set()](const T& e) mutable { return elem_seen.insert(e).second; }; return filter(func, il); } } #endif