#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
// print a vector
template<typename T1>
std::ostream& operator <<( std::ostream& out, const std::vector<T1>& object )
{
out << "[";
if ( !object.empty() )
{
//std::copy( object.begin(), --object.end(), std::ostream_iterator<T1>( out, ", " ) );
for(typename std::vector<T1>::const_iterator t = object.begin(); t != object.end() - 1; ++t) {
out << *t << ", ";
}
out << *--object.end(); // print the last element separately to avoid the extra characters following it.
}
out << "]";
return out;
}
int main()
{
vector<vector<int> > a;
vector<int> b;
//cout << b ; // Works fine for this
cout << a; // Compiler error
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aXRlcmF0b3I+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBwcmludCBhIHZlY3Rvcgp0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4Kc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCggc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IHN0ZDo6dmVjdG9yPFQxPiYgb2JqZWN0ICkKewogICAgb3V0IDw8ICJbIjsKICAgIGlmICggIW9iamVjdC5lbXB0eSgpICkKICAgIHsKICAgICAgICAvL3N0ZDo6Y29weSggb2JqZWN0LmJlZ2luKCksIC0tb2JqZWN0LmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8VDE+KCBvdXQsICIsICIgKSApOwogICAgICAgIGZvcih0eXBlbmFtZSBzdGQ6OnZlY3RvcjxUMT46OmNvbnN0X2l0ZXJhdG9yIHQgPSBvYmplY3QuYmVnaW4oKTsgdCAhPSBvYmplY3QuZW5kKCkgLSAxOyArK3QpIHsKICAgICAgICAJb3V0IDw8ICp0IDw8ICIsICI7CiAgICAgICAgfQogICAgICAgIG91dCA8PCAqLS1vYmplY3QuZW5kKCk7IC8vIHByaW50IHRoZSBsYXN0IGVsZW1lbnQgc2VwYXJhdGVseSB0byBhdm9pZCB0aGUgZXh0cmEgY2hhcmFjdGVycyBmb2xsb3dpbmcgaXQuCiAgICB9CiAgICBvdXQgPDwgIl0iOwogICAgcmV0dXJuIG91dDsKfQoKaW50IG1haW4oKQp7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4gPiBhOwogICAgdmVjdG9yPGludD4gYjsKICAgIC8vY291dCA8PCBiIDsgLy8gV29ya3MgZmluZSBmb3IgdGhpcwogICAgY291dCA8PCBhOyAvLyBDb21waWxlciBlcnJvcgp9ICA=