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!
}
相关文章
|
3月前
|
网络协议 安全 Shell
【内网—内网转发】——代理转发_ew(Earthworm)代理转发
【内网—内网转发】——代理转发_ew(Earthworm)代理转发
215 4
|
网络协议 网络架构
网关、DNS、路由器区别
1.首先得区分一下网关和路由器的区别: 网关是一个IP地址。是一个网络连接到另一个网络的“关口”。 路由器是一个物理设备。一般局域网的网关就是路由器的IP地址。 2. 网关、DNS、路由的例子 假设你的名字叫小不点(很小),你住在一个大院子里,你的邻居有很多小伙伴,父母是你的网关。
1182 0
|
17天前
|
JSON 文字识别 自然语言处理
转发文章
通过文档智能(Document Mind)解析文档支撑检索增强生成RAG 通过文档智能(Document Mind)将文档解析为结构化数据,结合语义理解,提取出文档层级树、样式信息以及版面信息,下游将解析的结果数据处理成文档切片,生成切块(Chunk)数据。 如图所示,文档智能支持将非结构化文档内容提取的信息输出为Markdown和Json格式,更方便构建语义分块策略。 解决问题:文档内容解析错误,相较于传统单页以电子解析文本或者OCR解析文本的方式,IDP则针对不同的文档类型,实现电子解析+OCR/NLP的细粒度混合版融合方案,通过电子解析+OCR/NLP中互相的优缺点弥补,提升解析的
29 4
|
3月前
|
安全 Java Shell
【内网—内网转发】——http协议代理转发_reGeorg代理转发
【内网—内网转发】——http协议代理转发_reGeorg代理转发
103 3
|
3月前
|
安全 Linux Shell
【内网—内网转发】——代理转发_SSH代理转发
【内网—内网转发】——代理转发_SSH代理转发
177 5
|
5月前
|
网络架构
|
6月前
|
存储 缓存 算法
交换机转发机制:存储转发与直通转发
交换机转发机制:存储转发与直通转发
775 1
|
11月前
|
监控 测试技术
转发路由器
转发路由器(Transit Router,简称TR)是地域范围内企业级核心转发网元
82 6
|
6月前
|
负载均衡 网络协议 应用服务中间件
SLB四层转发和七层转发
SLB四层转发和七层转发详细介绍
679 0
|
存储 弹性计算 网络协议
部分报文无法通过自建SNAT转发到公网
此文探讨部分报文无法通过SNAT转换IP地址的场景,探究conntrack/iptables处理报文和连接的方式,并分析了相关的源码。 问题现象 使用ECS自建NAT网关,同VPC内其他ECS都通过此自建NAT网关ECS的SNAT功能访问公网。SNAT功能使用iptables实现,命令如下。 iptables -t nat -A POSTROUTING -j MASQUERADE 客户端访
555 0
部分报文无法通过自建SNAT转发到公网