Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56082
  • 博文数量: 25
  • 博客积分: 2051
  • 博客等级: 大尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-24 19:56
文章分类
文章存档

2011年(1)

2009年(8)

2008年(16)

我的朋友
最近访客

分类: C/C++

2008-09-30 20:41:31

#include

// print elements of an STL container
template
void printcoll (T const& coll)
{
    typename T::const_iterator pos;  // iterator to iterate over coll
    typename T::const_iterator end(coll.end());  // end position

    for (pos=coll.begin(); pos!=end; ++pos) {
        std::cout << *pos << ' ';
    }
    std::cout << std::endl;
}
这里在printcoll里必须使用typename,否则T::const_iterator就会被认为是一个T的静态成员,那么他就是一个具体的变量和对象
在g++中,如果不是用typename,并不会报错,但是会给你一个警告,
typename std::vector*,
   std::allocator*> >::reverse_iterator' is implicitly a typename
warning: implicit typename is deprecated, please see the
   documentation for details

阅读(578) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~