Skip to content

Commit 9a6b9ce

Browse files
committed
epee: fix serialization compile errors with Boost 1.85
1 parent b66de90 commit 9a6b9ce

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

contrib/epee/include/serialization/keyvalue_serialization.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,18 @@ public: \
9898
#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name) \
9999
epee::serialization::selector<is_store>::serialize_t_val_as_blob(this_ref.varialble, stg, hparent_section, val_name);
100100

101-
#define KV_SERIALIZE_VAL_POD_AS_BLOB_N(varialble, val_name) \
102-
static_assert(std::is_pod<decltype(this_ref.varialble)>::value, "t_type must be a POD type."); \
103-
KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name)
101+
#define KV_SERIALIZE_VAL_POD_AS_BLOB_N(variable, val_name) \
102+
static_assert(std::is_trivially_copyable_v<decltype(this_ref.variable)>, "t_type must be a trivially copyable type."); \
103+
static_assert(std::is_standard_layout_v<decltype(this_ref.variable)>, "t_type must be a standard layout type."); \
104+
KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(variable, val_name)
104105

105-
#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(varialble, val_name, default_value) \
106+
#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(variable, val_name, default_value) \
106107
do { \
107-
static_assert(std::is_pod<decltype(this_ref.varialble)>::value, "t_type must be a POD type."); \
108-
bool ret = KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name) \
108+
static_assert(std::is_trivially_copyable_v<decltype(this_ref.variable)>, "t_type must be a trivially copyable type."); \
109+
static_assert(std::is_standard_layout_v<decltype(this_ref.variable)>, "t_type must be a standard layout type."); \
110+
bool ret = KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(variable, val_name) \
109111
if (!ret) \
110-
epee::serialize_default(this_ref.varialble, default_value); \
112+
epee::serialize_default(this_ref.variable, default_value); \
111113
} while(0);
112114

113115
#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N(varialble, val_name) \
@@ -118,7 +120,7 @@ public: \
118120
#define KV_SERIALIZE(varialble) KV_SERIALIZE_N(varialble, #varialble)
119121
#define KV_SERIALIZE_VAL_POD_AS_BLOB(varialble) KV_SERIALIZE_VAL_POD_AS_BLOB_N(varialble, #varialble)
120122
#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT(varialble, def) KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(varialble, #varialble, def)
121-
#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE(varialble) KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, #varialble) //skip is_pod compile time check
123+
#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE(varialble) KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, #varialble) //skip is_trivially_copyable and is_standard_layout compile time check
122124
#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB(varialble) KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N(varialble, #varialble)
123125
#define KV_SERIALIZE_OPT(variable,default_value) KV_SERIALIZE_OPT_N(variable, #variable, default_value)
124126

0 commit comments

Comments
 (0)