How to statically assert if enumeration constant is defined?
The same way as you would detect any nested declaration:
template <typename T, typename = void>
struct enum_defines_a : std::false_type {};
template <typename T>
struct enum_defines_a<T, decltype(void(T::a))> : std::is_enum<T> {};
static_assert(enum_defines_a<e>::value, "Enum doesn't define 'a'");