I have tried implementing something (https://bitbucket.org/jakobla/sphinx). It supports both unscoped enums and C++11 scoped enums, both with the possibility to specify the underlying type. Enumerators for unscoped enums are injected into the parent namespace in addition to the enum scope.
..cpp:enum:: UnscopedEnum : char
..cpp:enumerator:: E2 = 42
..cpp:enum:: struct ScopedEnum
..cpp:enumerator:: ScopedEnum::A = 60
An enumerator declared independently of its enum.
(all of this is in the C++ domain, and it's currently completely independent of the C domain)