enum classフィールドを基になる型に変換する方法はありますか?これは自動だと思ったが、どうやらそうではなかった。
enum class my_fields : unsigned { field = 1 };
unsigned a = my_fields::field;
その割り当てはGCCによって拒否されています。error: cannot convert 'my_fields' to 'unsigned int' in assignment。
                  参考までに、このルールはで定義されてい
                
                  
                    —
                    軌道上での明度レース
                    
                  
                
              [C++11: 7.2/9]ます。
                
                  @Pubby残念なことに、スコープのない「列挙型」は、すべての列挙子で外側のスコープを汚染します。悲しいかな、両方の世界のベストはありません(とにかくC ++ 14現在)。スコープを明確に入れ子にしながら、基本型に暗黙的に変換します(これは、C ++が他のクラスの継承を処理する方法と矛盾します。値または基本型を取る関数への参照)。
                
                
                  
                    —
                    ドウェインロビンソン、
                    
                  
                
              
                  @DwayneRobinsonはい、あります。スコープ外の列挙型を構造体または(より好ましくは)名前空間内に固定します。したがって、スコープが設定され、暗黙のint変換がまだあります。(私は必ずintに変換する必要がある理由について2度考えて、より良いアプローチがあるかどうかおそらく考えます。)
                
                
                  
                    —
                    Pharap 
                    
                  
                
              
enum。