According to this, you can forward declare an enum. But what happens if the class or struct that the enum was declared in wasn't defined? What's the recourse then?
I've also gone through this thread and it doesn't answer this question.
Example:
File A1.h
struct A1 {
enum E1 { x1, y1, z1 };
void fn1(A1::E1& e);
void fn1(A2::E2& e);
};
File A2.h
struct A2 {
enum E2 { x2, y2, z2 };
void fn2(A1::E1& e);
void fn2(A2::E2& e);
};