2013-08-06 62 views
1

例如專門在類模板中定義的類型?

template<class T> 
struct Foo 
{ 
    typedef int Type; 
    void f(); 
} 

Foo<T>::f()可以專用於一個特定的T。定義類型Type?如果有效,我不需要專門研究整個班級。任何方式來實現這個意圖?

+0

什麼意圖?表達你的意圖。用幾個詞來表達它。 – Nawaz

回答

2
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; 
+0

非常聰明。要做到這一點,我不需要專門研究整個班級。 – user1899020

+0

@ user1899020是的,這是避免特化的主要方法:從或繼承簡單的專用類/方法,例如'std :: conditional'或'std :: enable_if' – Walter