例:
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私の元の意見では、私
                
                  
                    —
                    公園
                    
                  
                
              typedef enumはネイティブ型ではないと思います。C++はそれをunsigned int実際に型として扱います。
                
                  この場合、GCCのエラーメッセージは最適ではありません。Clangは、元のタイプのを出力することで、混乱を抑えたメッセージを表示します
                
                  
                    —
                    cpplearner 
                    
                  
                
              clr。
                
                  @cpplearnerうん、そういうわけで私
                
                  
                    —
                    公園
                    
                  
                
              enum typeはunsigned intC ++のように扱うと思った。
                enum Xとは異なる独自のタイプですint
                
enumaはunsigned int?