#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
阅读(584) | 评论(0) | 转发(0) |