不談適用性,純粹語法上實現(xiàn),我自己無能為力。
template<typename?T,?template<T?a>?class?T2>
class?TmTm


{
};
posted on 2006-04-05 23:24
萬連文 閱讀(892)
評論(12) 編輯 收藏 引用 所屬分類:
模板
FeedBack:
2006-04-06 00:01 |
gcc 2.4.2:
template < int i >
class damn
{
};
TmTm < int, damn > obj;
回復 更多評論
2006-04-06 13:42 |
謝謝,GCC果然對C++語法支持好一些,我開始也是那樣考慮,但是用VS2003就是不支持,不知道2005怎么樣。
回復 更多評論
2006-04-06 14:20 |
2005也不行。
因為無論如何都不知道如何給出一個int的值。
從這一點來說,gcc不知道會把damn實例化成什么,damn<0>嗎?
回復 更多評論
2006-04-06 15:45 |
@沐楓:
此例中TmTm并沒有實際使用T2,因此實例化TmTm時并不會實例化damn
回復 更多評論
2006-04-06 15:50 |
在上面只需要一個類型而已,其實由于前面T類型可以推導出class T2的模板類型,但是VS2003就是不支持,我想可能是由于它的編譯器更傾向與開發(fā),做了一些處理以減少編譯器復雜度。
回復 更多評論
2006-04-07 16:53 |
TmTm<int,vector<int> >
回復 更多評論
2006-04-07 18:52 |
上面那個在VS2003中不可以,在GCC中估計可以,類型匹配,但是可以省略調(diào)vector的<int>
回復 更多評論
2006-04-10 20:46 |
2005也不支持,尚未找到2005中使用該類的方法。VC的目的也不是減少編譯起復雜度,他的偏特化推導就非常強。看來寫C++編譯器真是一件殺腦細胞的事情。。
回復 更多評論
2006-04-11 14:34 |
在m$ weak vc2003中可以這樣變通:
template < typename Ty >
struct dummy
{
template < Ty a >
struct damn
{
};
};
TmTm < int, dummy < int >::damn > obj;
05沒試,大抵也可通過
回復 更多評論
2006-04-11 22:16 |
上面可以通過,從VC編譯器來講總算是欺騙了它,編譯器沒有從typename T的類別推導出template<T a> 中的T,非得認為構(gòu)造一個一摸一樣的類型來填補第二個參數(shù)。
回復 更多評論
2006-06-16 16:44 |
,2003可以支持模板的模板參數(shù)。可以生成這樣的類呀
template<typename T,template<T a> class U>
class T
{
};
這樣沒有任何問題呀
回復 更多評論