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. 你能解釋這個會員功能模板嗎?
感謝您的寶貴意見。 –