2010-08-13 116 views
7

模板的模板規範是這樣的:模板模板總專業化

template < template <class> class T > 
struct MyTemplate 
{ 
}; 

我應該如何創建一個總(或部分)專門針對此模板? 這可能嗎?

+1

...某處精彩!我等不及了! – 2010-08-13 16:46:34

+0

誰在世界投票結束,爲什麼?這似乎是一個完全合法的,熱門的問題。 – 2010-08-13 16:51:23

+0

@Jerry:如果你看到問題的前30秒(投票的地方),這是有道理的。這只是代碼直到'{'毫無疑問。我發表了評論:「'}; //你在哪裏用這個?'」約翰回答說。但現在已經修復了。 :) – GManNickG 2010-08-13 16:54:31

回答

5

像這樣:

#include <iostream> 

template <typename T> 
struct foo{}; 

template <typename T> 
struct bar{}; 

template < template <class> class T > 
struct MyTemplate 
{ 
    static const bool value = false; 
}; 

template <> 
struct MyTemplate<bar> 
{ 
    static const bool value = true; 
}; 


int main(void) 
{ 
    std::cout << std::boolalpha; 
    std::cout << MyTemplate<foo>::value << std::endl; 
    std::cout << MyTemplate<bar>::value << std::endl; 
} 
+0

GMan,有一種強制MyTemplate專業化的方法T吧應該期待什麼? – scooterman 2010-08-13 17:02:35

+0

@scooterman:那麼在你的課堂上,你只需要使用'bar ',它會起作用或不起作用。如果我正確理解你的問題。 – GManNickG 2010-08-13 17:35:03

3

這方面的一個專業化會,例如是:

template<> 
struct MyTemplate<std::auto_ptr> { 
    // ... 
};