我想编写一个函数,该函数返回代表两个容器的范围或单个容器的范围。目的是在迭代过程中抽象它:
const auto range = getRange(...);
for (const auto& object : range) {
...
}
我考虑过使用boost::range::join
的方式:
auto getRange(...) {
if (...) {
return boost::range::join(container1, container2);
} else {
return boost::make_iterator_range(container3);
}
}
但是它不能编译。可能我在这里没有使用正确的类型。我该如何声明一个函数,该函数返回一个公共类型,而该类型可以代表一个或两个容器而独立地进行统一迭代?