Я пытаюсь написать кусок кода для развлечения, используя шаблоны C ++.
#include <iostream>
#include <vector>
template <class Container>
std::ostream& operator<<(std::ostream& o, const Container& container)
{
typename Container::const_iterator beg = container.begin();
o << "["; // 1
while(beg != container.end())
{
o << " " << *beg++; // 2
}
o << " ]"; // 3
return o;
}
int main()
{
std::vector<int> list;
list.push_back(0);
list.push_back(0);
std::cout << list;
return 0;
}
Приведенный выше код не компилируется:)
При 1, 2, 3 выдается та же ошибка: ошибка C2593: 'operator <<' является неоднозначным </strong>
Все, что я пытаюсь сделать, это перегрузить оператор << для работы с любым контейнером. Имеет ли это смысл ? Как это будет сделано, если возможно, если нет, то почему? </p>
РЕДАКТИРОВАТЬ :: Спасибо за исправления :) 'sth' - хорошее решение.
Мне просто любопытно, исчезнет ли эта двусмысленность, как объяснил Нейл, если мы сможем использовать C ++ 0x Concepts?