I am trying to write a piece of code for fun using C++ templates.
#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;
}
The above code doesn't compile :)
At 1, 2, 3 the same error is produced : error C2593: 'operator <<' is ambiguous
All what I am trying to do is overloading the << operator to work with any container. Does that make sense ? How would that be done If possible, if not why ?
EDIT :: Thanks for corrections :) 'sth' way is a good solution.
I am just curious if this ambiguity -as Neil explained- would go away if we could use C++0x Concepts ?