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!
}
相关文章
|
2月前
|
存储 缓存 算法
交换机转发机制:存储转发与直通转发
交换机转发机制:存储转发与直通转发
35 1
|
4月前
|
负载均衡 网络协议 应用服务中间件
SLB四层转发和七层转发
SLB四层转发和七层转发详细介绍
181 0
|
5月前
|
监控 测试技术
转发路由器
转发路由器(Transit Router,简称TR)是地域范围内企业级核心转发网元
47 6
|
11月前
|
存储 Java 应用服务中间件
一文了解转发与重定向
一文了解转发与重定向
78 0
|
网络协议
二层交换与三层IP转发
最近学习交换与路由知识,做点笔记,作为以后的复习使用,也分享给网友学习使用。
90 0
二层交换与三层IP转发
|
缓存 安全 网络安全
详解通信数据转发程序:代理、网关、隧道
1.代理 代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器 持有资源实体的服务器被称为源服务器。从源服务器返回的响应经过代理服务器后再传给客户端 每次通过代理服务器转发请求或响应时,会追加写入Via首部信息🎶
154 2
详解通信数据转发程序:代理、网关、隧道
|
消息中间件 RocketMQ 开发者
转发 IndexFile 文件|学习笔记
快速学习转发 IndexFile 文件
61 0
转发 IndexFile 文件|学习笔记
|
存储 弹性计算 网络协议
部分报文无法通过自建SNAT转发到公网
此文探讨部分报文无法通过SNAT转换IP地址的场景,探究conntrack/iptables处理报文和连接的方式,并分析了相关的源码。 问题现象 使用ECS自建NAT网关,同VPC内其他ECS都通过此自建NAT网关ECS的SNAT功能访问公网。SNAT功能使用iptables实现,命令如下。 iptables -t nat -A POSTROUTING -j MASQUERADE 客户端访
507 0
部分报文无法通过自建SNAT转发到公网
|
应用服务中间件
|
网络协议 网络架构
Iptablesl nat转发规则
nat表需要的三个链:   1.PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;   2.POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。
1396 0