3.1.9崭新的Template特性

Variadic Template 可变参数模板

void print()
{
} template <typename T, typename… Types>
void print (const T& firstArg, const Types&… args)
{
std::cout<<firstArg<<std::endl;
print(args);
}

如上,如果传人1或多个实参,上述的function template就会被调用,区分第一个实参,允许第一实参被打印,然后递归调用print()并传入其余实参。必须提供一个nontemplate重载函数print(),才能结束整个递归动作。

Alias Template 带别名的模板

template <typename T>

using Vec = std::vector<T,MyAlloc<T>>;

后,可以这样声明:

Vec<int> coll;

reference wrapper

官方的解释是这样的:

Reference wrapper

Class that emulates a reference to an element of type T, but which can be copied (it is both copy-constructible and copy-assignable).

实例:

std::vector<std::reference_wrapper<Item>> books;  // elements are references

Item f("Faust",12.99);
books.push_back(f); // insert book by reference

for (const auto& book : books) {
    std::cout << book.get().getName() << ": "
    << book.get().getPrice() << std::endl;
  }

注意book.get().getName(),循环体中book被声明为处理“类型为Item&”的元素,用它直接调用成员函数前要调用get()。

C++11开始支持数组的begin和end,具体用法为:

int ia[]={,,,,,,,};
int *b=begin(ia);
int *e=end(ia);

C++11的一些新特性的更多相关文章

  1. (数据科学学习手札139)geopandas 0.11版本重要新特性一览

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,就在几天前,geopandas ...

  2. kafka 幂等生产者及事务(kafka0.11之后版本新特性)

    1. 幂等性设计1.1 引入目的生产者重复生产消息.生产者进行retry会产生重试时,会重复产生消息.有了幂等性之后,在进行retry重试时,只会生成一个消息. 1.2 幂等性实现1.2.1 PID ...

  3. RAC 11.2的新特性

    网格即插即用(GPnP) 网格即插即用帮助管理员来维护集群,以前增加或删除节点需要的一些手动操作的步骤现在可以由GPnP来自动实现. GPnP不是一个单独的概念,它依赖于以下特性:在一个XML配置文件 ...

  4. Mysql8.0.11简介,新特性

    MySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 注意:从 MySQL 5.7 升级到 MySQL 8 ...

  5. jdk 9 10 11 12 13 新特性

    jdk 9 新特性 1.集合加强 jdk9 为所有集合(List/Set/Map)都增加了 of 和 copyOf 方法,用来创建不可变集合,即一旦创建就无法再执行添加.删除.替换.排序等操作,否则将 ...

  6. C# 11 的这个新特性,我愿称之最强!

    前言 在日常开发中我们经常会将JSON.XML.HTML.SQL.Regex等字符串拷贝粘贴到我们的代码中,而这些字符串往往包含很多的引号",我们就必须将所有引号逐个添加转义符\进行转义.这 ...

  7. C++11的模板新特性-变长参数的模板

    这个特性很赞,直接给例子吧,假如我要设计一个类,CachedFetcher内部可能使用std::map也可能使用std::unordered_map,也可能是其它的map,怎么设计呢?没有C++11变 ...

  8. C++11 带来的新特性 (4)—— 匿名函数(Lambdas)

    1 语法 Lambdas并不是新概念,在其它语言中已经烂大街了.直接进入主题,先看语法: [ captures ] ( params ) specifiers exception attr -> ...

  9. C++11/14的新特性——更简洁

      新的字符串表示方式——原生字符串(Raw String Literals) C/C++中提供了字符串,字符串的转义序列,给输出带来了很多不变,如果需要原生义的时候,需要反转义,比较麻烦. C++提 ...

随机推荐

  1. SQL2008中Merge Into的用法

    在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge ...

  2. Java基础之处理事件——添加工具提示(Sketcher 9 with tooltips)

    控制台程序. 在Java中实现对工具提示的支持是非常简单的,秘诀仍在我们一直使用的Action对象中.Action对象拥有存储工具提示文本的内置功能因为文本是通过SHORT_DESCRIPTION键提 ...

  3. JQuery Delay Hover效果

    CSS代码 .tbui_aside_float_bar { position: fixed; left: 50%; bottom: 120px; margin-left: 608px; border- ...

  4. IntelliJ IDEA 项目相关的几个重要概念介绍

    必备材料介绍 IntelliJ IDEA 对其他 IDE 转过来的用户有特别优待,对其专门整理了非常棒的资料,还请其他 IDE 过来的用户抽时间查看,会有很大帮助:Eclipse 用户可以看:http ...

  5. JavaBean 动作元素事例

    JavaBean.jsp JavaBeanSuccess.jsp Type类 效果

  6. C++Builder 解决绘图闪动问题

    使用双缓冲 Form->DoubleBuffered = true; Panel->DoubleBuffered = true;

  7. [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. Android中使用ShareSDK实现分享

    1,在http://www.mob.com官网上去创建一个后台应用(如果没有账号的同学要去先注册一下),主要后去的是你新创建的应用的appKey值 2,这里我们分享新浪微博为例,在新浪微博的sdk中创 ...

  9. 手把手教你用动软.NET代码生成器实例教程

    动软实战攻略 手把手教你用动软 文档编号:20110421 版权所有 © 2004-2011 动软 在线帮助:http://help.maticsoft.com 目录   一.        产品介绍 ...

  10. 关于设置oracle中系统编号SYSID自动编号的问题;

    http://liye9801.blog.163.com/blog/static/601970320086210039591/ 如何在oracle里设置自动编号列 2008-07-21 12:00:3 ...