Вы делаете это неправильно.
Этот шаблон вводит в заблуждение.Его имя ужасно.
Это дополнительные методы: fillVector
, printElements
, init
сбивают с толку (что именно они должны делать?).
Скорее всего printElements
отсутствует std::ostream& stream
аргумент (иможет быть, тип возврата).
Вы не описали, какую функциональность вы пытаетесь реализовать.Скорее всего, это то, что вам нужно:
template<class T>
class PrintContainer
{
public:
PrintContainer(const T& container)
: mContainer { container }
{}
std::ostream& printTo(std::ostream& stream) const {
// or whatever you need here
for (const auto& x : mContainer) {
stream << x << ", ";
}
return stream;
}
private:
const T& mContainer;
};
template<class T>
std::ostream& operator<<(std::ostream& os, const PrintContainer<T>& p) {
return p.printTo(os);
}