I think this should be virtual, given that most likely a pointer to the base class Archive is stored within a container and then destructed. We're containing non-pod types in ArchiveVirtual, which may be a semantic error in the refactor process.