首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++20不再需要依赖范围

C++20不再需要依赖范围
EN

Stack Overflow用户
提问于 2022-02-22 14:42:33
回答 1查看 67关注 0票数 0

最近我升级到c++20,并注意到编译器不会抛出一个错误,当我不将typename放在依赖的cope类型别名的前。

代码语言:javascript
复制
using iterator = (no typename here) std::vector<int>::iterator

这是新的c++20标准的一部分,还是仅仅是gcc的问题,并不是所有的编译器都这么做的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 14:45:22

这是一件C++20的事情:

在某些情况下,只有类型名称才能有效地出现。在这些上下文中,假定有一个依赖的限定名来命名一个类型,而不需要输入名称:

  • 一个限定名,用作(顶层)decl-说明符-seq中的声明说明符:。
    • 名称空间范围内的简单声明或函数定义;
    • 班级成员声明;
    • 在默认参数之外的类成员声明(包括友函数声明)中的参数声明;
    • 函数或函数模板的声明器的参数声明,其名称在默认参数之外是限定的;
    • 在默认参数之外的lambda表达式的参数声明;
    • 需求表达式的参数声明;
    • 非类型模板参数声明中的类型;

  • 在type-id中出现的限定名,其中最小的包围类型id是:。
    • 新表达式中不带括号的类型;
    • 别名声明中的类型id;
    • 尾随的返回类型,
    • 类型模板参数的默认参数,或
    • static_cast、dynamic_cast、const_cast或reinterpret_cast的类型id。

有关更多详细信息,请参阅名字

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

https://stackoverflow.com/questions/71223301

复制
相关文章

相似问题

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