次のように定義された列挙が与えられた場合:
DEFINE_ENUM(name,enumerators) \
enum name \
{ \
BOOST_PP_SEQ_ENUM(enumerators) \
};
DEFINE_ENUM() マクロの一部として定義され、列挙のすべてのメンバーを含むベクトルを返す関数を定義するにはどうすればよいですか?
以下は、上記のマクロ定義の最後に追加されたもので、これまでのところほぼ同じです。
std::vector<name> MembersOf(name AnyItem) { \
return {BOOST_PP_SEQ_ENUM(enumerators)}; \
};
ただし、これは無効に終了したマクロ定義を報告しており、それを含むファイルが複数のファイルに含まれている場合、すべての DEFINE_ENUM() の MemberOf() が複数定義されていると主張しています。