Suppose to have a base class that defines an enum like the following in its header file:
class Base{
    public:
        Base();
        enum MyEnum1{
           A_VALUE=1, 
           B_VALUE=2
        };
};
And a derived class that defines in a different enum the same variables but with different values:
class Derived : public Base{
    public:
        Derived();
        enum MyEnum2{
           A_VALUE=3, 
           B_VALUE=4
        };
};
Obviously I did a mistake, since I did not notice that A_VALUE and B_VALUE were already defined in the base class. Then I've used that values in my derived class implementation. Why I have not been warned by the compiler (Visual Studio 2013) that there was a conflict in that values? I could think that I was using the values of MyEnum2 instead of MyEnum1 or vice versa.