Fixed MacOS build

This commit is contained in:
tclinken 2020-05-17 12:47:32 -07:00
parent c054b47150
commit 3399f566db
1 changed files with 7 additions and 20 deletions

View File

@ -90,33 +90,20 @@ private: // Forward-declare IndexedSet::Node because Clang is much stricter abou
struct IteratorImpl { struct IteratorImpl {
typename std::conditional_t<isConst, const IndexedSet::Node, IndexedSet::Node>* node; typename std::conditional_t<isConst, const IndexedSet::Node, IndexedSet::Node>* node;
template <typename = std::enable_if_t<isConst>> explicit IteratorImpl<isConst>(const IteratorImpl<!isConst>& nonConstIter) : node(nonConstIter.node) {
explicit IteratorImpl<isConst>(const IteratorImpl<false>& nonConstIter) : node(nonConstIter.node) {} static_assert(isConst);
}
explicit IteratorImpl(decltype(node) n = nullptr) : node(n){}; explicit IteratorImpl(decltype(node) n = nullptr) : node(n){};
const T& operator*() const { return node->data; } typename std::conditional_t<isConst, const T, T>& operator*() const { return node->data; }
template <typename = std::enable_if_t<!isConst>>
T& operator*() {
return node->data;
}
const T* operator->() const { return &node->data; } typename std::conditional_t<isConst, const T, T>* operator->() const { return &node->data; }
template <typename = std::enable_if_t<!isConst>>
T* operator->() {
return &node->data;
}
void operator++(); void operator++();
void decrementNonEnd(); void decrementNonEnd();
template <bool otherIsConst> bool operator==(const IteratorImpl<isConst>& r) const { return node == r.node; }
bool operator==(const IteratorImpl<otherIsConst>& r) const { bool operator!=(const IteratorImpl<isConst>& r) const { return node != r.node; }
return node == r.node;
}
template <bool otherIsConst>
bool operator!=(const IteratorImpl<otherIsConst>& r) const {
return node != r.node;
}
// following two methods are for memory storage engine(KeyValueStoreMemory class) use only // following two methods are for memory storage engine(KeyValueStoreMemory class) use only
// in order to have same interface as radixtree // in order to have same interface as radixtree
StringRef& getKey(uint8_t* dummyContent) const { return node->data.key; } StringRef& getKey(uint8_t* dummyContent) const { return node->data.key; }