/*
- * Copyright 2016 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <boost/intrusive/list.hpp>
#include <boost/intrusive/unordered_set.hpp>
#include <boost/iterator/iterator_adaptor.hpp>
+#include <folly/portability/BitsFunctexcept.h>
namespace folly {
* unless evictions of LRU items are triggered by calling prune() by clients
* (using their own eviction criteria).
*/
-template <class TKey, class TValue, class THash = std::hash<TKey> >
-class EvictingCacheMap : private boost::noncopyable {
-
+template <class TKey, class TValue, class THash = std::hash<TKey>>
+class EvictingCacheMap {
private:
// typedefs for brevity
struct Node;
maxSize_(maxSize),
clearSize_(clearSize) { }
+ EvictingCacheMap(const EvictingCacheMap&) = delete;
+ EvictingCacheMap& operator=(const EvictingCacheMap&) = delete;
+ EvictingCacheMap(EvictingCacheMap&&) = default;
+ EvictingCacheMap& operator=(EvictingCacheMap&&) = default;
~EvictingCacheMap() {
setPruneHook(nullptr);
TValue& get(const TKey& key) {
auto it = find(key);
if (it == end()) {
- throw std::out_of_range("Key does not exist");
+ std::__throw_out_of_range("Key does not exist");
}
return it->second;
}
const TValue& getWithoutPromotion(const TKey& key) const {
auto it = findWithoutPromotion(key);
if (it == end()) {
- throw std::out_of_range("Key does not exist");
+ std::__throw_out_of_range("Key does not exist");
}
return it->second;
}