diff options
Diffstat (limited to 'src/serialize.h')
-rw-r--r-- | src/serialize.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/serialize.h b/src/serialize.h index e90b041cc2..57e434faf1 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -155,7 +155,12 @@ enum SER_GETHASH = (1 << 2), }; -#define READWRITE(...) (::SerReadWriteMany(s, ser_action, __VA_ARGS__)) +//! Convert the reference base type to X, without changing constness or reference type. +template<typename X> X& ReadWriteAsHelper(X& x) { return x; } +template<typename X> const X& ReadWriteAsHelper(const X& x) { return x; } + +#define READWRITE(...) (::SerReadWriteMany(s, ser_action, __VA_ARGS__)) +#define READWRITEAS(type, obj) (::SerReadWriteMany(s, ser_action, ReadWriteAsHelper<type>(obj))) /** * Implement three methods for serializable objects. These are actually wrappers over |