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#解決方案模板
感謝您的寶貴意見。 –