template<class T>
struct Foo
{
typedef int Type;
void f();
}
Foo<T>::f()
可以專用於一個特定的T
。定義類型Type
?如果有效,我不需要專門研究整個班級。任何方式來實現這個意圖?
template<class T>
struct Foo
{
typedef int Type;
void f();
}
Foo<T>::f()
可以專用於一個特定的T
。定義類型Type
?如果有效,我不需要專門研究整個班級。任何方式來實現這個意圖?
template<class T>
struct Foo
{
typedef typename some_class_template<T>::type Type;
void f();
};
成員函數有聲明和定義,您可以專門定義。對於成員類型不能這樣做。這些必須是專門的聲明。
當然,我some_class_template
可從標準庫中任何東西,例如
typedef typename std::conditional<sizeof(T)==4, int, T>::type Type;
非常聰明。要做到這一點,我不需要專門研究整個班級。 – user1899020
@ user1899020是的,這是避免特化的主要方法:從或繼承簡單的專用類/方法,例如'std :: conditional'或'std :: enable_if' – Walter
什麼意圖?表達你的意圖。用幾個詞來表達它。 – Nawaz