Extended Non-intrusive Serialization to Ease Usage for Library Developers #1680
The intrusive serialization factory requires a class to ship a serialize() function. This is not always desirable, e.g. if this function is automatically generated externally. The non-intrusive serialization factory requires users to manually register all template instantiations, which is impossible to guarantee in the context of generic libraries (or: a user burden, but that's essentially the same).
The new "semi-intrusive" code adds infrastructure to relieve library developers from having to manually register all template instantiations. This requires a minute change (intrusion) to registered templates, but serialize() can still be put outside.