音视频开发进阶

C++ 模板系列小结07-尾置返回类型

在使用模板时可以显示指定模板类型,尤其是针对有返回类型的模板,显示指定可以避免类型转换带来的困扰。 但有时候显示指定模板实参类型会给用户增添额外负担,而且不会带来什么好处。 比如如下代码,接受表示序列的一对迭代器和返回序列中的一个元素的引用: 1template<typename It> 2??? &fcn(It beg,It end){ …

C++ 模板系列小结06-可变参数模板特性

C++11 中引入了可变参数模板的特性,可变参数模板就是一个接受可变数目参数的模板函数或者模板类。 可变数目的参数被称为参数包,存在如下两种参数包: 模板参数包:表示零个或多个模板参数 函数参数包:表示零个或多个函数参数 具体如下所示,声明了一个可变参数函数模板。 1// Args 是一个模板参数包;rest 是一个函数参数包 2// Args 表示零个或多 …

C++ 模板系列小结05-模板类型作为模板参数

在前面的文章中,模板参数除了是类型之外,还可以是非类型参数,但只有整型和指向外部链接对象的指针才可以。 除此之外,模板类型同样可以作为类型参数,并且还很有用处。

C++ 模板系列小结04-类模板中的成员模板

在之前的类模板中,只在类声明时用了 typename 指定模板参数类型,之后的成员函数复用模板参数类型。 但实际上,类成员也可以是模板,嵌套类和成员函数都可以作为模板。

C++ 模板系列小结03-在模板中指定变量类型

在之前的代码示例中,频繁用到 typename 关键字。 它的作用就是声明模板参数是类型参数(对于非类型参数,之前的文章也有提到了),也可以用 class 关键字来代替,但为了避免歧义,大多还是使用 typename 了。 除此之外,在模板的定义也可以使用 typename 关键字,用来指定变量的类型。

C++ 模板系列小结02-非类型模板参数

前面已经介绍了函数模板和类模板,还介绍了类模板的默认参数,在代码示例中都是用具体类型来作为模板参数的。 实际上,模板参数不局限于类型,普通值也可以作为模板参数,也就是本篇要讲的内容:非类型模板参数。

C++ 模板系列小结01-函数模板和类模板

现如今,掌握 C++ 模板技巧并且熟练使用可以说是能力进阶的必备内容了。 在一些优秀的开源项目中经常能看到模板的使用,要是不了解其使用方法,对分析源码都会有些阻碍。 推荐阅读《C++ Templates 中文版》一书,或许可以让你对 C++ 模板有个更加系统的概念,同时辅助阅读网上相关的博客文章加深理解,在代码实践中去掌握提高。 C++ 模板主要可以分为函数 …