万星星@豌豆荚 欢迎加入我们
一个吃软饭的男人!!!!!我只想写程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0
不谈适用性,纯粹语法上实现,我自己无能为力。

template<typename T, template<T a> class T2>
class TmTm
{
}
;
posted on 2006-04-05 23:24 万连文 阅读(812) 评论(12)  编辑 收藏 引用 所属分类: 模板

FeedBack:
# re: 能生成这个类的一个对象嘛???
2006-04-06 00:01 | dicklee
gcc 2.4.2:

template < int i >
class damn
{
};

TmTm < int, damn > obj;
  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-06 13:42 | 万连文
谢谢,GCC果然对C++语法支持好一些,我开始也是那样考虑,但是用VS2003就是不支持,不知道2005怎么样。  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-06 14:20 | 沐枫
2005也不行。
因为无论如何都不知道如何给出一个int的值。
从这一点来说,gcc不知道会把damn实例化成什么,damn<0>吗?  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-06 15:45 | dicklee
@沐枫:
此例中TmTm并没有实际使用T2,因此实例化TmTm时并不会实例化damn  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-06 15:50 | 万连文
在上面只需要一个类型而已,其实由于前面T类型可以推导出class T2的模板类型,但是VS2003就是不支持,我想可能是由于它的编译器更倾向与开发,做了一些处理以减少编译器复杂度。  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-07 16:53 | 红叶搂风
TmTm<int,vector<int> >  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-07 18:52 | 万连文
上面那个在VS2003中不可以,在GCC中估计可以,类型匹配,但是可以省略调vector的<int>  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-10 20:46 | Ninputer
2005也不支持,尚未找到2005中使用该类的方法。VC的目的也不是减少编译起复杂度,他的偏特化推导就非常强。看来写C++编译器真是一件杀脑细胞的事情。。  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-11 14:34 | cf
在m$ weak vc2003中可以这样变通:
template < typename Ty >
struct dummy
{
template < Ty a >
struct damn
{
};
};

TmTm < int, dummy < int >::damn > obj;
05没试,大抵也可通过  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-11 22:16 | 万连文
上面可以通过,从VC编译器来讲总算是欺骗了它,编译器没有从typename T的类别推导出template<T a> 中的T,非得认为构造一个一摸一样的类型来填补第二个参数。  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-04-22 11:18 | dd
嵌套的类模版vc6就支持了,用错了。  回复  更多评论
  
# re: 能生成这个类的一个对象嘛???
2006-06-16 16:44 | wandy
,2003可以支持模板的模板参数。可以生成这样的类呀
template<typename T,template<T a> class U>
class T
{
};
这样没有任何问题呀  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


简历下载
联系我

<2007年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(66)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜