   Cant make a list of stringstreams.
  Why is this messing up.std::stringstream line;std::list<std::stringstream> Lines;Lines.push_back(line);// compile errorThe error is actually in the list header file. But it goes away if I remove the push_back line.   
  The reason is that streams are not CopyConstructible. You will need to use pointers to stringstreams. This task can be made easier with boost::ptr_list< std::stringstream > or std::list< boost::shared_ptr< std::stringstream > >.You could also make a wrapper type that makes the appropriate copy calls. I don't remember exactly what they are, something along the lines of:ss.copyfmt( ss2 );ss.clear( ss2.rdstate() );ss.str( ss2.str() );jfl.   ;  With either of those will I have to make copies my self, or deal with dynamic memory allocation?   ;  You will have to deal with dynamic allocation (although with the boost constructs, you don't need to worry about deleting your pointers). You could also have a list of pointers, but then you get into problems with the lifetime of the stack variable:std::list< std::stringstream * > l;void AddSS() {  std::stringstream ss;  l.push_back( &ss );}int main() {  AddSS();  l.front()->str( "Dude" ); // BOOM!};  A different workaround: Use std::list<std::string> + boost::lexical_cast.   