我正在使用 Boost.Range 来传递一些数据和该数据的容器类。数据在不同的线程中加载,在某些情况下可能还没有准备好。在这种情况下,容器使用默认的 iterator_range 进行初始化,因此包含单个迭代器。我正在分配和复制数据容器(因此是 iterator_ranges)。但是, iterator_range 复制构造函数调用 begin() 和 end() ,它们将在原始数据为单数时断言。因此,无法复制空的数据容器。
有什么办法可以避免这种限制吗?
为什么要实施此限制?以下工作正常,范围不应该表现相似吗?
typedef std::vector<int>::iterator iterator;
iterator it; // Singular
iterator it2 = it; // Works
boost::iterator_range<iterator> range; // Singular
boost::iterator_range<iterator> range2 = range; // Asserts in debug, but why?