No. According to the C standard, identifiers in an enumerator list must be distinct from all other identifiers declared in the same scope.
EDIT: After reading the C++ standard, it should seem that I'm wrong
If you declare your enum as enum class, you should be able to reuse names. So it would look like this:
enum class A
{
None,
Value1,
Value2
}
enum class B
{
None,
Sometype1,
Sometype2
}
//... where you're using these enums
B someVariable = B::None;
B someOtherVariable = B::Value1;
A yetAnotherVariable = A::None;
Downsides: you have to use A:: or B:: to access the enum's values and you can't treat your enumeration's values as an int or bool anymore (so int number = A::None and A enumValue = 1 will not work).
EDIT2: enum class doesn't seem to be in the C++ 1998 standard... your mileage may vary (it may or may not be implemented in Visual Studio; can't try right now). Guess I should be more careful which document I pull up (I grabbed the Oct. 2008 draft of the C++ standard). If it's not in VS, your best bet is to prefix your constants with some distinct prefix (like ANone and BNone).