Thing is if you go somewhat further than POD you always end up with 'this field should not be serialized' situations so you'd still have to manually add code to indicate that. Though I agree it would be nice just be able to tell 'serialize this struct', it's not really that hard with boost.serialization or similar to declare the serialization functions manually (I don't know how ROOT does it):
template< class Archive >
void serialize( Archive& ar, POD& pod )
{
ar & pod.field1;
ar & pod.field2;
ar & pod.field3;
}
ROOT does this with its own preprocessor and custom comment decorators. like:
class mydata
{
/* simple type */
int n;
/* the following array is of length n */
double * v; //[n]
/* don't serialize the following */
int reference_count; //!
ClassDef(mydata,1) ; // this macro does some magic, 1 is the version number etc.
};