
I don't think it is unreasonable to require that users register each class and archive type before they use them together. If portability is not a problem for someone, they can stick this registration in a global object in the cpp file that defines the class, and suffer later when they port to another system. Even if portability was not an issue, I would still do the registration "manually". I don't think the author of class foo should be the one who decides whan archives will be used to serialize objects of class foo. Besides, what if I want to use class foo but I will never serialize it? The physical coupling introduced by the "automatic" registration will link all kinds of dead code to my executable. No, thanks. On top of that you have multi-threading problems to deal with.