This is less likely to clash with names used by interfaces and it's a
bit clearer what's going on (since they are basically proxies for
constructors and destructors).
Transferring some argument pack is much easier than trying to
deserialize into an existing object when you also have to transfer more
information than just that object.