If we look at the documentation for is_signed , it says:
If T is a subscribed arithmetic type , the value of the element constant is true. For any other type, the value is false.
and the enumeration is not an arithmetic type, so the result must be false. From the standard section of a C ++ 11 project 3.9.1 Basic types [basic.fundamental]:
[...] Integral and floating types are collectively called arithmetic types [...]
You can get the base type for an enumeration using std :: basic_type , and then apply std::is_signed to that type.
source share