作者:唐风

主页:http://www.cnblogs.com/muxue


C++11 语言核心的改进中,最为关注的有 rvalue reference (这里有一篇拙作),lambda,variadic template。rvalue 规则稍微复杂,但一旦理解和记住了,应用上就没有什么困难。lambda 其实是一个“很自然”的语言设施,除了语法稍显诡异之外,习惯了就能马上用上,而且是能广泛用上的好东西。variadic template 这个新特性不像前两者,它本身的语法规则并不复杂,但是应用的时候确比较费脑子,好在这个技术主要是用在库的实现中,一个实现得好的库,并不会让我们对实现的细节作任何的要求

variadic template 特性本身是一个很自然的需求,它完善了 C++ 的模板设计手段。原来的模板参数可以使类和函数的参数类型“任意化”,如果再加上“参数个数的任意化”,那么在参数方面的设计手段就基本上齐备了,有了variadic template 显然可以让设计出来的函数或是类有更大的复用性。因为有很多处理都是与“处理对象的个数”关系不大的,比如说打屏(printf),比如说比较大小(max,min),比如函数绑定子(bind,function要对应各种可能的函数就要能“任意”参数个数和类型)。如果不能对应任意个参数,那么就总会有人无法重用已有的实现,而不得不再重复地写一个自己需要的处理,而共通库的实现者为了尽可能地让自己写的类(函数)能复用在更多的场景,也不得不重复地写很多的代码或是用诡异的技巧,宏之类的去实现有限个“任意参数”的对应。(像TR1中的 bind 等)。

声明一个带有可变参数个数的模板的语法如下所示:

  • template<typename ...Element> class tuple;
  •  
  • tuple<int, string> a;  // use it like this
  • 相关文章:

    • 2022-12-23
    • 2021-04-10
    • 2022-12-23
    • 2021-09-27
    • 2022-12-23
    • 2022-12-23
    • 2021-06-30
    • 2022-01-31
    猜你喜欢
    • 2021-10-24
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2022-03-09
    • 2021-10-29
    相关资源
    相似解决方案