C++ boost::一组迭代器无法合并

C++ boost::一组迭代器无法合并,c++,boost,iterator,c++17,C++,Boost,Iterator,C++17,我正在尝试使用boost::flat_set来处理我需要唯一的小迭代器集。代码没有编译,因为对make\u reverse\u iterator的调用不明确,但我不确定它是如何发生的。我已尝试将问题简化为MWE: #include <boost/container/flat_set.hpp> #include <set> #include <iostream> using Set = std::set<int>; using SetIt = Se

我正在尝试使用
boost::flat_set
来处理我需要唯一的小迭代器集。代码没有编译,因为对
make\u reverse\u 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;
}
#包括
#包括
#包括
使用Set=std::Set;
使用SetIt=Set::迭代器;
结构比较器{
布尔运算符(){
返回(*lhs)<&(*rhs);
}
};
int main(){
std::集x;
boost::container::flat_set a;
boost::container::flat_set b;
a、 插入(x.插入(1).第一个);
a、 插入(x.插入(2).第一个);
a、 插入(x.插入(3).第一个);
a、 插入(x.插入(4).第一个);
a、 插入(x.插入(5).第一个);
b、 插入(x.插入(3).第一个);
b、 插入(x.插入(4).第一个);
b、 插入(x.插入(5).第一个);
b、 插入(x.插入(6).第一个);
b、 插入(x.插入(7).第一个);
a、 合并(b);
用于(自动v:a)

std::cout这个问题显然是

我在上重现了错误