[英]What is the difference between two template types and two template parameter lists?
這兩個聲明之間有什么區別?
template<typename T, typename U>
template<typename T> template<typename U>
在對此問題的公認答案中含糊地解釋了此問題: 專門化成員函數時出現“模板模板列表過多”錯誤
我了解它們不是一回事,但是我很難找到可以教它們用法的資源。 解釋和例子將不勝感激。
考慮需要兩種類型的功能模板。 這將需要兩個參數:
template<typename T, typename U>
bool isEqual(const T &t, const U &u) {
return t == u;
}
現在考慮帶有成員函數模板的類模板。 這將需要兩個列表:
template<typename T>
struct Foo {
template<typename U>
void bar(const U &u);
};
template<typename T>
template<typename U>
void Foo<T>::bar(const U &u) {/*do something with u*/}
如果您將類模板專用於其他類型模板,也會發生這種情況。 例如, SomeRandomClass
答案中的MyTemplateClass
如何專門針對SomeRandomClass
類型: https : SomeRandomClass
報價以防萬一發生變化:
template <>
template <typename T,typename S>
class MyTemplateClass <SomeRandomClass<T,S> >
{
void DoSomething(SomeRandomClass<T,S>& t) { /* something */ }
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.