gpt4 book ai didi

c++ - 使用声明引入的枚举

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:55 24 4
gpt4 key购买 nike

我试图理解用嵌套名称说明符定义的枚举。标准说的是 N4296:7.2/4 [dcl.enum]:

If the enum-key is followed by a nested-name-specifier, the enum-specifier shall refer to an enumeration that was previously declared directly in the class or namespace to which the nested-name-specifier refers (i.e., neither inherited nor introduced by a using-declaration), and the enum-specifier shall appear in a namespace enclosing the previous declaration.

那么,为什么下面的示例有效呢?

#include <iostream>

namespace A
{
namespace B
{
enum E : int;
}
}
namespace C
{
using A::B::E;
}

enum C::E : int { x = 2 };

int main()
{
}

DEMO

namescape C中,我们通过using declaration声明了enum E,然后用enum定义来引用它。编译器可能会抛出一个错误,但它并没有。哪里不对,误会在哪里?

最佳答案

显然,根据您给出的原因,这是一个编译器错误。
有趣的是,Clang 3.5.0 和 GCC 4.9 都接受该程序。

关于c++ - 使用声明引入的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27664057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com