enum MyEnum { EnumElement1, EnumElement2, EnumElement3, }; BRUSSEL_ENUM(MyEnum, ToString FromString); enum CountedEnumAll { CEA_Foo, CEA_Bar, CEA_COUNT, }; BRUSSEL_ENUM(CountedEnumAll, ToString FromString); enum CountedEnum { CE_Foo, CE_Bar, CE_FooBar, CE_COUNT, }; BRUSSEL_ENUM(CountedEnum, ToString FromString ExcludeHeuristics); namespace MyNamespace { enum MyNamespacedEnum { MNE_Foo, MNE_Bar, }; BRUSSEL_ENUM(MyNamespacedEnum, ToString FromString ExcludeHeuristics); namespace details { enum MyNamespacedEnum { MNE_Foo, MNE_Bar, }; BRUSSEL_ENUM(MyNamespacedEnum, ToString FromString ExcludeHeuristics); } } namespace foo::details { enum Enum { }; BRUSSEL_ENUM(Enum, ToString FromString ExcludeHeuristics); }