首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在明确的专业化中,限制声明内容的规范规则在哪里?

在明确的专业化中,限制声明内容的规范规则在哪里?
EN

Stack Overflow用户
提问于 2021-08-16 03:01:38
回答 1查看 173关注 0票数 3

论显性专门化的语法

明确-专门化: 模板<>声明声明:

  • 整块声明
  • nodeclspec-函数声明
  • ..。
  • 显式实例化
  • ..。

声明可以是语法上的任何有效声明。考虑一下这个例子

代码语言:javascript
复制
template<class T>
struct A{
  template<class Y>
  struct B{};
};

template<>
template struct A<int>::B<int>;  //declaration: explicit-instantiation

GCC和Clang都不认识语法。限制声明的规则在哪里不能是显式实例化?

EN

回答 1

Stack Overflow用户

发布于 2021-08-16 03:52:33

正如您提到的,显式专门化的语法需要在template<>之后声明。然而,仅仅因为某些语法满足语法生成规则,它就不一定是有效的代码。

在显式专门化的情况下,可以使用此语法显式专门化的实体在temp.expl.spec#1中列出。

下列任何一种明确的专门化: (1.1)函数模板 (1.2)类模板 ..。可以通过template<>引入的声明声明.

语法template struct A<int>::B<int>;是一个显式实例化,这里没有列出它,因为它不是一个可以显式专门化的实体。

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

https://stackoverflow.com/questions/68796960

复制
相关文章

相似问题

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