Q
C++模板解释
1
A
回答
1
我试着用一个例子来解释它。
请看下面struct foo
// generic
template <typename T1, typename T2>
struct foo
{ };
// partial specialization
template <typename T2>
struct foo<int, T2>
{ };
// full specialization
template <>
struct foo<int, long>
{ };
有三个版本:一个通用版本,部分专业化和全方位的专业化。
考虑下面的参数列表
1) int, long
2) int, int
,并观察充分和部分特。
列表(1)匹配两个专业化(与T2
等于long
)当列表(2)匹配仅部分特。
与完全特化相匹配的每个参数列表(仅列表(1))与部分特殊化匹配,但存在与部分特殊化(列表(2))匹配的列表,该列表与完全特化不匹配。
根据你引用的句子,完整的专业化比部分专业化“更专业化”。
你也可以看到,部分特比通用版“更专业的”,因为存在每场比赛的偏特,比赛也通用版(带T1
等于int
),那可是列表的列表(long, int
,由例如)匹配通用版本,但不匹配部分专业化。
这也是obviuos,完整的专业化是更专业的通用版本。
0
// Y
template <typename T1, typename T2>
struct foo {};
// X
template <typename T>
struct foo<int, T> {};
“模板X不是模板Ÿ更专业的,如果符合由X指定的每一个参数列表也匹配一个由Y指定的,而不是周围的其他方式。”
// Imagine all possible argument lists for X. They will always match Y.
foo<int, int> f1;
foo<int, double> f2;
foo<int, my_object> f3;
/* ... */
// Imagine all possible argument lists for Y. They will not always match X.
foo<double, int> f4;
foo<int, double> f5;
foo<char, my_object> f6;
/* ... */
因此,X
比Y
更加专业化。
相关问题
- 1. 关于C++模板语法的解释
- 2. 理解C++模板代码
- 3. 了解extern模板在c + +
- 4. C++模板模板
- 5. 请解释这种模糊性在C
- 6. 尖括号被解释为模板函数中的模板类型
- 7. Python:K模式解释
- 8. C#语法解释
- 9. C#解释语言
- 10. C功能解释
- 11. C++指针解释
- 12. 模板的模板C++
- 13. 模板模板C++函数
- 14. C++模板递归 - 如何解决?
- 15. 在C++中理解模板的问题
- 16. C++模板函数的解析
- 17. C++:模板的替代解决方案
- 18. 解密C++模板错误信息
- 19. 用C++解析模板文件
- 20. PHPBB模板注释条件
- 21. TFS签入注释模板
- 22. 评估模板(模板模板参数)的C++模板参数
- 23. 如何防止JSP中的$解释,使jQuery模板工作
- 24. 请解释下面的并行代码模板
- 25. iOS Instrumentation:如何解释内存分配模板?
- 26. XenForo模板编译器如何解释xen:title标记?
- 27. 如何解释变量模板中的继承?
- 28. Django的模板从数据库渲染和解释标签
- 29. 的FreeMarker联模板(负载从数据库)不解释
- 30. 你能解释这个会员功能模板吗?
感谢您的宝贵意见。 –