
I am pretty sure it's because of my lack of skills with templates... Still, I don't understand why I can stream a vector if it's on its own, but not if it's stored in a boost::tuple. And it works with a std::pair! Any hint? #include <boost/tuple/tuple.hpp> #include <boost/tuple/tuple_io.hpp> #include <iostream> #include <vector> #include <algorithm> using namespace std; using namespace boost; template <typename T> ostream& operator<<(ostream& out, const vector<T>& v) { copy(v.begin(), v.end(), ostream_iterator<T>(out, " ")); return out; } template <typename T, typename U> ostream& operator<<(ostream& out, const pair<T, U>& p) { return out << p.first << " " << p.second; } int main(int, char**) { vector<float> v; cout << v; // Works fine pair<vector<float>, pair<int, int> > p; cout << p; // Works fine tuple<vector<float> > t; cout << t; // <== WON'T COMPILE } Thanks, Frank