首页 > 代码库 > 转发:某些函数需要将其一个或多个实参连同类型不变地转发给其他函数

转发:某些函数需要将其一个或多个实参连同类型不变地转发给其他函数

16.47 编写你自己版本的翻转函数,通过调用接受左值和右值引用参数的函数来测试它。

#include<iostream>#include<string>#include<utility>using namespace std;template <typename T>int compare(const T &a ,const T &b){    if(a<b) return -1;    if(b<a) return 1;    return 0;}template <typename T>auto sum(T a,T b)->decltype(a+b){    return a+b;}//翻转函数template<typename F,typename T1,typename T2>void flip(F f,T1 &&t1,T2 &&t2){    f(std::forward<T2>(t2),std::forward<T1>(t1));}void f(int v1,int &v2){    cout<<v1<<" "<<++v2<<endl;}void g(int &&i,int &j){    cout<<i<<" "<<j<<endl;}int main(){    int j=8;    compare<const char*>("hi","world");    flip(f,j,42);    cout<<j<<endl;    flip(g,j,42);}

 

转发:某些函数需要将其一个或多个实参连同类型不变地转发给其他函数