摘要: 1.编译器用推断出的模板参数来为我们实例化一个特定版本的函数。 2.每个类型参数前必须使用关键字class或typename。在模板参数列表中,这两个关键字含义相同,可以互换使用,也可以同时使用。 3.除了定义类型参数,还可以在模板中定义非类型参数,一个非类型参数表示一个值而非一个类型,当一个模板被 阅读全文
posted @ 2017-08-27 17:47 MyCPlusPlus 阅读(1126) 评论(0) 推荐(0)
摘要: 某些函数需要将其一个或多个实参连同类型不变的转发给其他函数,这种情况下我们需要保持被转发实参的所有性质,包括实参类型是否是const的以及实参是左值还是右值。 我们可以使用右值引用来解决上述问题: 但是函数func对于接受一个左值引用的函数工作的很好,但不能接受右值引用参数的函数: 为了解决上述问题 阅读全文
posted @ 2017-08-27 16:33 MyCPlusPlus 阅读(357) 评论(0) 推荐(0)
摘要: 标准库move函数是使用右值引用的模板的一个很好的例子。标准库是这样定义std::move的: 我们考虑如下代码的工作过程: 在第一个赋值中,实参是string类型的右值,因此过程为: 推断T的类型为 string remove_reference<string> 的 type 成员是 string 阅读全文
posted @ 2017-08-27 15:55 MyCPlusPlus 阅读(18182) 评论(0) 推荐(0)