This can (and presumably should) be a reference??
Needs shared_ptr for copy ctor (which seems reqd for g++-4.6)
In g++-4.6 STL objects need to be assignable.
Restore copy ctor and copy assignment to compile with g++-4.6