Я хочу написать функцию, которая возвращает либо диапазон, представляющий два контейнера, либо диапазон для одного контейнера.Цель состоит в том, чтобы абстрагировать это в итерации:
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);
}
}
Но он не компилируется.Вероятно, я не использую правильный тип здесь.Как я могу объявить функцию, которая возвращает общий тип, который мог бы равномерно повторяться независимо от того, представляет ли он один или два контейнера?