首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用枚举的C++20可以应用于模板吗?

使用枚举的C++20可以应用于模板吗?
EN

Stack Overflow用户
提问于 2021-04-08 08:38:32
回答 1查看 180关注 0票数 0

根据优先选择的说法,gcc和msvc都已经完成了C++20 feature using enum的实现,这意味着我们用enum来声明

代码语言:javascript
复制
struct A { 
  enum e { /* ... */ }; 
};

struct S { 
  using enum A::e;
};

但当我将其应用于模板时:

代码语言:javascript
复制
template <class T>
struct S { 
  using enum T::e;
};

gcc 废品它与:

代码语言:javascript
复制
<source>:7:14: error: 'using enum' of dependent type 'typename T::e'
    7 |   using enum T::e;
      |              ^~~~
<source>:7:17: note: declared here
    7 |   using enum T::e;
      |                 ^

msvc还通过以下方式拒绝它:

代码语言:javascript
复制
<source>(7): error C2868: 'e': ill-formed using-declaration; expected a qualified-name
<source>(8): note: see reference to class template instantiation 'S<T>' being compiled

我不知道为什么这不能工作,因为它似乎与非模板没有什么不同。

这是编译器错误还是格式错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-08 08:49:07

来自提案

详细说明说明者不应指定依赖类型,该类型应具有可达的枚举说明符。

在您的示例中,T::e是一个依赖类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67000270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档