    template<class Archive> \
    void serialize(Archive& ar) { ar(__VA_ARGS__); }

// Every polymorphic subclass must call this macro with the class name outside
// of the class definition. Unfortunately, if this is used in a header that is
// included more than once (even if its surrounded by an include guard), the
// code will fail to compile. Use this in a cpp file instead.
#define WARPED_REGISTER_POLYMORPHIC_SERIALIZABLE_CLASS CEREAL_REGISTER_TYPE
    
#endif
