2013-05-19 100 views
2

我嘗試實現一個模板類,並希望將其限制爲專用於某些給定的模板類。例如,在下面的代碼中,我想要定義模板類CTest,該模板類只能針對某些模板參數T專用於std::vector<T>。對於其他模板參數,該類應該是未定義的。如何實現模板類?給定模板類的C++類模板專業化

// the interface should be something like following 
//template <typename std::vector<T> > 
//class CTest<std::vector<T> >; 

int main(int argc, char* argv[]) 
{ 
    CTest<std::vector<int> > t1; // successful 
    CTest<std::vector<string> > t1; // successful 
    CTest<int> t2;     // compile error 
    return 0; 
} 

回答

2

離開原模板不確定,只有部分 - 專門爲要承認類型:

template <typename> class CTest; // undefined 


#include <vector> 

template <typename T, typename Alloc> 
class CTest<std::vector<T, Alloc>> 
{ 
    // ... your template here ... 
}; 
+0

工作。謝謝! –

0

模板特例可以用完全不同的界面比他們專門類模板來實現。沒有辦法限制哪些模板專門化可以存在。

如果您想對可用作模板參數的內容有一些影響,請改爲使用模板實例化。