It is because it is stream, copying it does not make sense like
copying file descriptor or hard drive or thread does not make sense.
What really matters in it is its streambuf. Let me demonstrate that
a bit by screwing with our favorite, std::cout. ;)
#include <iostream>
#include <sstream>
int main()
{
std::stringstream ss;
std::streambuf *coutbuf = std::cout.rdbuf();
std::cout.rdbuf(ss.rdbuf());
std::cout << "second text" << std::endl;
std::string s = ss.str();
std::cout.rdbuf(coutbuf);
std::cout << "first text : " << s;
}
What it outputs to console?
Hope you start to get the idea why copying streams does not make sense.