【发布时间】:2019-01-26 10:34:46
【问题描述】:
我正在尝试将boost::flat_set 用于我需要唯一的小型迭代器集。该代码无法编译,因为对 make_reverse_iterator 的调用不明确,但我不确定它是如何发生的。我试图将问题简化为 MWE:
#include <boost/container/flat_set.hpp>
#include <set>
#include <iostream>
using Set = std::set<int>;
using SetIt = Set::iterator;
struct Comparator {
bool operator()(SetIt lhs, SetIt rhs) const {
return &(*lhs) < &(*rhs);
}
};
int main() {
std::set<int> x;
boost::container::flat_set<Set::iterator, Comparator> a;
boost::container::flat_set<Set::iterator, Comparator> b;
a.insert(x.insert(1).first);
a.insert(x.insert(2).first);
a.insert(x.insert(3).first);
a.insert(x.insert(4).first);
a.insert(x.insert(5).first);
b.insert(x.insert(3).first);
b.insert(x.insert(4).first);
b.insert(x.insert(5).first);
b.insert(x.insert(6).first);
b.insert(x.insert(7).first);
a.merge(b);
for (auto v : a)
std::cout << *v << '\n';
return 0;
}
【问题讨论】: