Вы получили несколько ответов, но я должен с ними не согласиться, по крайней мере, до некоторой степени. Моя немедленная реакция заключается в том, что вы не должны передавать вектор на b::fill
вообще. Скорее, вы должны передать итератор (или, может быть, пару итераторов). Остальное в основном верно, хотя это означает, что fill
должна быть функцией-членом шаблона. Когда вы вызываете его, вы, вероятно, захотите передать std::back_insert_iterator
, обычно получаемый с std::back_inserter
.
Часть того, что вы сказали, кажется противоречивой: если b::fill
изменяет vec1
и vec2
, они, вероятно, должны не быть переданы как ссылки на const. По общему признанию, const
не имеет точно своего обычного значения применительно к контейнеру, но факт остается фактом: передача ссылки на const в функцию, единственное намерение которой, очевидно, состоит в том, чтобы изменить то, что было передано, кажется неправильной.