38 auto add(T&& val) ->
bool {
39 std::unique_lock<std::shared_mutex> l(m_mut);
40 auto added = m_vals.emplace(std::forward<T>(val));
42 m_eviction_queue.push(std::ref(*added.first));
43 if(m_eviction_queue.size() >= m_max_size) {
44 auto& v = m_eviction_queue.front();
46 m_eviction_queue.pop();
49 assert(m_eviction_queue.size() <= m_max_size);