我们可以在函数中定义枚举吗?

for*_*ack 9 c++ enums

我们可以在函数内定义类/结构.我们还可以在函数内定义枚举联合吗?

void fun() {
    enum {BIG, MID, SMALL};
    // other code.
}
Run Code Online (Sandbox Code Playgroud)

我可以使用gcc 4.8.2编译代码,但我不确定它是否合法.

Tej*_*dra 15

是的,在函数内定义枚举是完全可以的.您的代码描述了完全合法的匿名枚举声明.

结构和类也可以在函数内声明(也可以是匿名的).在函数内声明的类型(而不是在命名空间或类范围内)的唯一限制是它们不能用作模板参数.

more information on 列举

C++ 11以后

自C++ 11以来,关于模板参数的限制已经改变,有关模板参数的更多信息可以在链接模板参数上找到

  • 自c ++ 11以来,这种限制发生了变化:[演示](http://coliru.stacked-crooked.com/a/ef41907c81b5502f) (3认同)
  • *可以*不能用作模板参数. (2认同)