C++ 完美转发

简介: C++ 完美转发

听上去比较高端的技术,而且曾作为面试题,这个功能实际上是让泛型自动匹配具体类型,代码:

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!
}
相关文章
|
4月前
|
网络协议 安全 Shell
【内网—内网转发】——代理转发_ew(Earthworm)代理转发
【内网—内网转发】——代理转发_ew(Earthworm)代理转发
267 4
|
1月前
|
JSON 文字识别 自然语言处理
转发文章
通过文档智能(Document Mind)解析文档支撑检索增强生成RAG 通过文档智能(Document Mind)将文档解析为结构化数据,结合语义理解,提取出文档层级树、样式信息以及版面信息,下游将解析的结果数据处理成文档切片,生成切块(Chunk)数据。 如图所示,文档智能支持将非结构化文档内容提取的信息输出为Markdown和Json格式,更方便构建语义分块策略。 解决问题:文档内容解析错误,相较于传统单页以电子解析文本或者OCR解析文本的方式,IDP则针对不同的文档类型,实现电子解析+OCR/NLP的细粒度混合版融合方案,通过电子解析+OCR/NLP中互相的优缺点弥补,提升解析的
41 4
|
4月前
|
安全 Linux Shell
【内网—内网转发】——代理转发_SSH代理转发
【内网—内网转发】——代理转发_SSH代理转发
248 5
|
4月前
|
安全 Java Shell
【内网—内网转发】——http协议代理转发_reGeorg代理转发
【内网—内网转发】——http协议代理转发_reGeorg代理转发
138 3
|
4月前
|
网络协议
详解VXLAN网络中报文是如何转发的?值得收藏学习!
详解VXLAN网络中报文是如何转发的?值得收藏学习!
183 0
详解VXLAN网络中报文是如何转发的?值得收藏学习!
|
前端开发 JavaScript 定位技术
路由器和路由到底啥区别?
路由器和路由到底啥区别?
|
7月前
|
存储 缓存 算法
交换机转发机制:存储转发与直通转发
交换机转发机制:存储转发与直通转发
914 1
|
监控 测试技术
转发路由器
转发路由器(Transit Router,简称TR)是地域范围内企业级核心转发网元
93 6
|
7月前
|
负载均衡 网络协议 应用服务中间件
SLB四层转发和七层转发
SLB四层转发和七层转发详细介绍
759 0
|
网络协议
二层交换与三层IP转发
最近学习交换与路由知识,做点笔记,作为以后的复习使用,也分享给网友学习使用。
131 0
二层交换与三层IP转发