3
初級模板:C++模板偏特語法
template<typename A, typename B> class MyClass {...
與模板特,是什麼應該不允許
template<typename A, typename B> class MyClass<int, float> {...
和
template<> class MyClass<int, float> {...
初級模板:C++模板偏特語法
template<typename A, typename B> class MyClass {...
與模板特,是什麼應該不允許
template<typename A, typename B> class MyClass<int, float> {...
和
template<> class MyClass<int, float> {...
template<typename A, typename B> class MyClass<int, float> {...
之間的差。事實上,如果你指定了形式參數A
和B
,你的模板應該使用它們。
第二種情況只是正常的:你說你沒有「免費」參數進行專業化。
的中間情況可能是
template<typename A> class MyClass<A, float> {...
這又是有效的:在這裏你只固定第二個模板參數。
部分專業化的想法如下:你使用一些形式參數製作模板,並用它們來表達對初始模板參數的約束。部分專業化的參數不需要與初始模板參數相同。例如:
template<typename X, typename Y, typename Z> class MyClass<X*, Y(Z&)> {...
將是您的案件的有效部分專業化。這可以理解爲「對於任意類型X
,Y
和Z
,如果MyClass
的模板參數匹配爲和Y(Z&)
,則使用此特化」。編譯器應該很聰明才能匹配類型模式。
from here:http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/partial_specialization.htm我得到了'template struct X {..' –
uray
2010-12-15 00:22:02
@uray:是的,在這種情況下,您正在使用模板參數。 – Vlad 2010-12-15 00:23:16
我該如何解決第一個問題,但是爲第二個參數'template class MyClass '使用模板? –
uray
2010-12-15 00:26:02