Hi Bob!
I can't comment specifically on the microsoft compiler,
but it appears to be acting according to the standard.
The key issue is that enum classes (scoped enums)
in c++11 do not implicitly convert to ints (unlike
"traditional" enums).
Let me quote from Stroustrup's (very useful) c++11 faq:
http://www.stroustrup.com/C++11FAQ.html#enum
The enum classes ("new enums", "strong enums") address
three problems with traditional C++ enumerations:
conventional enums implicitly convert to int, causing errors
when someone does not want an enumeration to act as an integer.
So, this is a feature (that I almost agree with), not
a bug.
Also not the further comment in the faq:
In the standard library, enum classes are used
...
Several of these have operators, such as == defined.
Reading between the lines a little here you can make
it possible to test your enum class against an int for
equality or inequality, but to do so you have to provide
your own operator==() and/or operator!=().
(But following Alf's suggestion, probably the most direct
fix to your current issue is to make cmdsArray an array
of Cmds rather than int.
> Bob
Happy C++11 Hacking!
K. Frank