Я пытаюсь сделать симпатичный принтер для std :: vector из чего угодно ... double, моих собственных классов ... всего, что имеет friend std::ostream& operator<<
.
Однако при попытке скомпилировать следующую функцию:
template <typename T>
std::ostream& operator<<(std::ostream& os, std::vector<T> const& list) {
std::vector<T>::const_iterator i = list.begin();
if (i == list.end()) {
os << "[ ]";
return os;
}
os << "[ " << *i << "\n";
++i;
for (; i != list.end(); ++i) {
os << ", " << *i << "\n";
}
os << "]";
return os;
}
Третья строка дает ошибку компиляции, error: expected ';' before 'i'
Я не совсем уверен, что вызывает это, но я подозреваю, что неправильно использую шаблоны. Любая помощь будет оценена!