Static code analysis puzzler in extremely simple declaration

55 Views Asked by At
myNameSpace::myEnumType LookupEnumValueFromString(const std::string& theString)
{
    myEnumType ReturnVal = myNameSpace::myEnumType::eUNKNOWN;

Parasoft reports “Implicit conversion of integer type from wider to narrower type shall not be used” on the assignment to myEnumType.

Where

namespace myNameSpace
{
    
    enum class myEnumType : uint32_t
    {
        ....  // other values
        eUNKNOWN = 0xFFFFFFFF
    }

and

typedef unsigned int       uint32_t;

If I redefine eUNKNOWN to be 0x7FFFFFFF, the report goes away. But the enum type is unsigned, so why does this happen? I am sure that I am overlooking something very obvious, but what?

0

There are 0 best solutions below