首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“从主模板的参数中推导出专门化的模板参数”意味着什么?

“从主模板的参数中推导出专门化的模板参数”意味着什么?
EN

Stack Overflow用户
提问于 2015-12-31 22:19:49
回答 1查看 341关注 0票数 2

N4567 14.5.5.1 temp.class.spec.matchp4 在引用类模板专门化的类型名称中,参数列表应与主模板的模板参数列表匹配。专门化的模板参数是从主模板的参数.中推导出来的。

代码语言:javascript
复制
template<class T1, class T2, int I> class A             { }; // #1
template<class T, int I>            class A<T, T*, I>   { }; // #2
A<int, int, 1>   a1; // uses #1

这个“推断”是否意味着14.8.2.5 temp.deduct.type?

模板参数可以在几种不同的上下文中推导,但在每种情况下,都会将以模板参数指定的类型(称为P)与实际类型(称为A)进行比较,并试图找到模板参数值(类型参数的类型、非类型参数的值或模板参数的模板),在替换推导的值(称为A )之后,使P与A兼容。

如果是的话,P和A是什么?

专门化的模板参数意味着主模板 int, int, 1 的实际模板参数,部分专门化 T, T*, I的模板参数或其他?

主模板的参数意味着主模板的实际模板参数int, int, 1 或主模板T1, T2, I的隐式模板参数或其他?

这句话是什么意思?

更新:

看起来伊戈尔·坦代尼克和@R·萨胡岛有不同的答案,我需要更多的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-12-31 22:30:39

给定模板及其专门化,使用:

代码语言:javascript
复制
A<int, int*, 1>   a2;

将使用专门化。

对于这种用法,

主模板的模板参数是intint*1

模板专门化的模板参数是int1

专门化、int1的参数是从主模板intint*1的参数中推导出来的。

在这种情况下,

Pintint*1

A是专门化的。

我想这就是你想要的答案。

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

https://stackoverflow.com/questions/34552056

复制
相关文章

相似问题

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