正文

[笔记].template 修饰 , 双重模板2008-03-20 22:38:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/rickone/33474.html

分享到:

代码:

template<int N>
void printBitset(std::bitset<N> const& bs)
{
     std::cout<<bs.template to_string<char,char_traits<char>,allocator<char> >();
}

能在DevCPP里编译通过,那个.template的意思就是告诉编译器,紧跟to_string的<并不是一个小于号,而是模板参数;需要这个 template修饰的地方(.或者->)是当前正处在一个模板中,前面的bs还未具现,它是一个模板函数里的某个参数,所以编译器是不知道它是什么东西的,如果你具现了,比如std::bitset<100> bs;那就不需要再加.template了。这和typename的第二个重要用法是一样的,用以申明模板中的参数的内嵌类型是一个类型,而不是静态变量。

双重模板是在模板参数中再用模板,比如

template <typename T,template <typename> class CONT >
stack{...};

不是所有编译器都支持这个较后增加的C++特性,当然你需要在这个类里面形式化的具现这个模板模板参数,像CONT<T>...。

阅读(4915) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册