82 template<
typename Derived>
87 explicit Pupper() =
default;
88 virtual ~
Pupper() =
default;
92 return static_cast<Derived*>(
this)->begin(value, meta);
95 template<
typename T,
typename = enable_if_puppable<T>>
97 static_cast<Derived*>(
this)->pup(value, meta);
101 static_cast<Derived*>(
this)->end(meta);
pup object using its component pup functions
PupPolicy begin_impl(T &value, const Meta &meta)
Pupper deals with object as-is, no associated pup functions will be invoked.
void end_impl(const Meta &meta)
void pup_impl(T &value, const Meta &meta)
PupPolicy
Controls an object's pup() behavior.
virtual ~Pupper()=default
Base class for working with puppable types.