【备忘】c++范型的种种

速写c++范性

template<typename/class T>声明下一个域存在范型

Q:范型/模版,意味着什么?
A: 类模版意味着类实体将生成、函数模版意味着将发生类型推导和实体生成

Q:template<class T>
void f(T&&)为什么可以接受任何类型的实参?不应该只接受右值吗?
A:当发生类型推导时,以上式f(arg)为例:
arg = 左值/左值引用 则 T = T& ,而 T& && = T&
arg = 右值/右值引用 则 T = T,故仍为T&&
总之就是,实参为左,形参为左值引用、实参为右、形参为右值引用(但不要忘了右值引用也是左值哦)
我们编写模版时希望T被推导为引用类型,因为引用几乎总是比拷贝高效

Q:remove_reference<T>是什么操作?
A:是type_traits头文件里面一些模版,它们帮助我们获得一些编译期的信息

Q:为什么要使用右值引用作为模版参数呢?
A:为了实现完美转发

Q:扩展参数包中的...是啥?
A:就是扩展符

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 7,974评论 1 51
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 123,047评论 18 134
  • 壹 2月份的一期《奇葩大会》里,高晓松说道,贫乏的性欲和物欲,确实是90年代摇滚歌手愤怒的原因。就摇滚这个话题,出...
    野狸阅读 277评论 2 2
  • 感恩今天的好天气,晚上又下起了小雨,感觉秋天一下就来到了面前 感恩以前的工作,今天要编辑一篇长文档,原本计划得一天...
    王丽小同学阅读 71评论 0 0