【问题标题】:Can we define enum inside a function?我们可以在函数中定义枚举吗?
【发布时间】:2016-04-21 10:05:39
【问题描述】:

我们可以在函数内部定义class/struct。我们也可以在函数中定义enumunion吗?

void fun() {
    enum {BIG, MID, SMALL};
    // other code.
}

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

【问题讨论】:

    标签: c++ enums


    【解决方案1】:

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

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

    more information onEnumeration

    C++11 以上

    从 C++ 11 开始,模板参数的限制已经改变,更多关于模板参数的信息可以在链接Template Parameters找到

    【讨论】:

    • 无法用作模板参数。
    • 自 c++11 以来该限制已更改:Demo
    • @Jarod42 是的,你是对的,完全错过了,谢谢提醒,编辑答案。官方标准中是否提到了任何参考资料,我在官方 C++11 标准中找不到它?
    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2011-01-28
    • 1970-01-01
    相关资源
    最近更新 更多