From b537ae6b5dfcb069c940a73b09f913749cee9eaa Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Tue, 4 Jul 2017 23:34:41 +0200 Subject: [PATCH] Fix issue with C++ not performing like C... --- m-variant.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/m-variant.h b/m-variant.h index c4da6ad1..a4a02d96 100644 --- a/m-variant.h +++ b/m-variant.h @@ -94,14 +94,15 @@ #define VARIANTI_GET_SWAP(f,t,o) M_GET_SWAP o #define VARIANTI_DEFINE_TYPE(name, ...) \ + enum M_C(name, _enum) { M_C(name, _EMPTY) \ + M_MAP2(VARIANTI_DEFINE_UNION_ELE, name, __VA_ARGS__) \ + }; \ typedef struct M_C(name, _s) { \ - enum M_C(name, _enum) { M_C(name, _EMPTY) \ - M_MAP2(VARIANTI_DEFINE_UNION_ELE, name, __VA_ARGS__) \ - } type; \ + enum M_C(name, _enum) type; \ union { \ M_MAP(VARIANTI_DEFINE_TYPE_ELE , __VA_ARGS__) \ } value; \ - } M_C(name,_t)[1]; + } M_C(name,_t)[1]; #define VARIANTI_DEFINE_UNION_ELE(name, a) \ , M_C3(name, _, VARIANTI_GET_FIELD a) #define VARIANTI_DEFINE_TYPE_ELE(a) \