例:
typedef enum Color
{
    RED,
    GREEN,
    BLUE
} Color;
void func(unsigned int& num)
{
    num++;
}
int main()
{
    Color clr = RED;
    func(clr);
    return 0;
}
编译时出现以下错误:
<source>: In function 'int main()':
<source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' to an rvalue of type 'unsigned int'
     func(clr);
         ^~~
我认为clr我传递给的变量()func(unsigned int&)是左值。我可以获取的地址,clr并可以为其分配另一个值。当我尝试将其传递给时,为什么会变成右值func(unsigned int&)?
                  @ NathanOliver-ReinstateMonica以我的原始观点,我认为
                
                  
                    —
                    科恩(Koen)
                    
                  
                
              typedef enum这不是本机类型,C ++ unsigned int确实会将其视为类型。
                
                  在这种情况下,GCC的错误消息不是最理想的。Clang会通过打印原始类型的来给出一个不太混乱的消息
                
                  
                    —
                    cpplearner 
                    
                  
                
              clr。
                
                  @cpplearner是的,这就是为什么我认为
                
                  
                    —
                    科恩(Koen)
                    
                  
                
              enum type将其视为unsigned intC ++。
                enum X是它自己的类型,与int
                
enum一个unsigned int?