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. 如何解释函数模板解析?
- 3. C++模板理解
- 4. 模板化函数指针解释
- 5. play2模板上的变量未解释
- 6. 了解extern模板在c + +
- 7. C++模板解析错误
- 8. 理解C++模板代码
- 9. 解释C宏
- 10. 解释在C
- 11. C++模板模板
- 12. 请解释这种模糊性在C
- 13. 尖括号被解释为模板函数中的模板类型
- 14. Python:K模式解释
- 15. LibSVM模型解释
- 16. C++模板模板(双模板?)
- 17. C++指针解释
- 18. C#解释语言
- 19. GUID的解释 - C++
- 20. C#语法解释
- 21. 请解释Objective-C
- 22. C功能解释
- 23. 指针C++解释
- 24. C++函子解释
- 25. C#语法解释
- 26. C++,模板模板规范
- 27. 模板的模板C++
- 28. 模板模板C++函数
- 29. 基本的C/C++解释
- 30. 生成C#解决方案模板
感谢您的宝贵意见。 –