Предположим у меня есть некоторый метод foo, который на вход принимает коллекцию каких-то значений. Причём это может быть и std::vector и std::array и std::array_view, например. Должен ли я писать перегруженную версию метода для каждого из этих типов или можно указать «Принимай тип однородной коллекции данных с произвольным доступом, не важно какой, лишь бы удовлетворяло этому условию»? В рамках стандарта до С++17 включительно.
Всем спасибо за ответы.