9#define DC_TRAIT_EQABLE(SELF) DC_REQUIRE_METHOD(bool, SELF, eq, (SELF const*, SELF const*));
11#define DC_MEM_EQ(SELF_1, SELF_2) (*(SELF_1) == *(SELF_2))
13#define _DC_DERIVE_EQ_MEMBER(MEMBER_TYPE, MEMBER_NAME) \
14 &&NS(MEMBER_TYPE, eq)(&self_1->MEMBER_NAME, &self_2->MEMBER_NAME)
16#define DC_DERIVE_EQ(TYPE) \
17 static bool NS(TYPE, eq)(TYPE const* self_1, TYPE const* self_2) { \
18 return true NS(TYPE, REFLECT)(_DC_DERIVE_EQ_MEMBER); \
21#define _DC_DERIVE_STD_EQ(TYPE, ...) \
22 static bool NS(TYPE, eq)(TYPE const* self_1, TYPE const* self_2) { return *self_1 == *self_2; }
#define _DC_DERIVE_STD_EQ(TYPE,...)
#define DC_STD_REFLECT(F,...)