例子:
SomeType bar::foo() const {
SomeType retVal;
for (auto i = 0u; i < 10; ++i) {
retVal = boost::range::join(retVal, m_someDataContainer.equal_range(i));
}
return retVal;
}
可以说,为简单起见, m_someDataContainer 和 bar 类定义如下:
typedef boost::multi_index_container<
int, bmi::indexed_by<bmi::hashed_unique<bmi::tag<struct someTag>,
bmi::identity<int>>>> Data;
class bar {
public:
SomeType foo() const;
private:
Data m_someDataContainer;
};
问题是:如何确定 foo() 的返回类型以及如何在不使用 boost::any_range 的情况下加入这些范围
EDIT1:看起来这是不可能的,在以前的连接值上调用join in loop会使结果类型成为joined_range的joined_range的嵌套类型...