簡體   English   中英

兩種模板類型和兩個模板參數列表有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM