听上去比较高端的技术,而且曾作为面试题,这个功能实际上是让泛型自动匹配具体类型,代码:
1.常规案例
#include <iostream>
#include "stdio.h"
using namespace std;
void Foo(int a) { cout << "int variable!" << endl; }
void Foo(float a) { cout << "float variable!" << endl; }
template <typename T>
void Foo(T a)
{
Foo(std::forward<T>(a));
}
int main()
{
Foo(12);
Foo(12.5f);
}
可以看见通过std:forward,可以将泛型方法跳转至已经
写好对应类型的方法上。
2.配合可变参数模板使用
配合可变参数模板后可以做到任意类型+任意参数数量的匹配,代码如下:
#include <iostream>
#include "stdio.h"
using namespace std;
void Foo(int a, int b) { cout << "int 2variable!" << endl; }
void Foo(float a) { cout << "float variable!" << endl; }
template <class... T>
void Foo(T... a)
{
Foo(std::forward<T>(a));
}
int main()
{
Foo(6,7);
//int 2 variable!
}