最近在学习 c++ 17 的一些新特性,为了加强记忆和理解,把这些内容作为笔记记录下来,有理解不对的地方请指正,欢迎大家留言交流. 引言 在介绍之前,我们从一个问题出发,C++ 的函数如何返回多个值? 比较有年代感的一种做法是将返回值作为引用参数传入,函数的返回值用来标识运行状态,比如像下面这样 #include <iostream> using namespace std; int func(const string& in, string& out1, string&…
我们也要时刻清醒,有时候右值会转为左值,左值会转为右值. (也许“转换”二字用的不是很准确) 如果我们要避免这种转换呢? 我们需要一种方法能按照参数原来的类型转发到另一个函数中,这才完美,我们称之为完美转发. std::forward就可以保存参数的左值或右值特性. 因为是这样描述的: When used according to the following recipe in a function template, forwards the argument to another funct…
我们也要时刻清醒,有时候右值会转为左值,左值会转为右值. (也许“转换”二字用的不是很准确) 如果我们要避免这种转换呢? 我们需要一种方法能按照参数原来的类型转发到另一个函数中,这才完美,我们称之为完美转发. std::forward就可以保存参数的左值或右值特性. 因为是这样描述的: When used according to the following recipe in a function template, forwards the argument to another funct…