当前位置: 首页 > news >正文

enable_if模板编程实现字节序转换模板

enable_if和SFINAE

SFINAE是模板的一个特性,也就是替换失败不报错。

正常来说,函数匹配的时候按照优先级依次匹配定义的重载函数,最终选择最佳匹配的函数运行。
模板也是一样的,但是在替换模板时,即使出现异常错误也不认为是错误,而只是简单地pass掉。

enable_if 是c++的标准模板,其实现非常简单,这里我们给出其实现的一种方式:

template<bool B, class T = void>
struct enable_if {};template<class T>
struct enable_if<true, T> { typedef T type; };
其作用在于当bool为true时,enable_if会有一个type类型,false时则没有。
因此利用这种条件为真时有type,条件为假时没有type。结合SFINAE特性,可以更方便的给模板制造一点小错误,让模板解析跳过当前模板。

字节序转换

template<class T>
typename std::enable_if<sizeof(T) == sizeof(uint64_t), T>::type
byteswap(T value) {return (T)bswap_64((uint64_t)value);
}/*** @brief 4字节类型的字节序转化*/
template<class T>
typename std::enable_if<sizeof(T) == sizeof(uint32_t), T>::type
byteswap(T value) {return (T)bswap_32((uint32_t)value);
}/*** @brief 2字节类型的字节序转化*/
template<class T>
typename std::enable_if<sizeof(T) == sizeof(uint16_t), T>::type
byteswap(T value) {return (T)bswap_16((uint16_t)value);
}
在匹配byteswap模板函数时,返回值
std::enable_if<sizeof(T) == sizeof(uint64_t), T>::type
会判断T的byte数是否等于8,等于8时,enable_if有type类型,函数模板替换成功,执行函数
不等于8时,没有enable_if没有type类型,替换错误,但是不会报错且跳过该模板,继续向下匹配。

参考:

视频:C++新标准012:enable_if

博客:C++ enable_if的使用_jeffasd的博客-CSDN博客_c++ enable_if

相关文章:

enable_if模板编程实现字节序转换模板

enable_if和SFINAESFINAE是模板的一个特性&#xff0c;也就是替换失败不报错。正常来说&#xff0c;函数匹配的时候按照优先级依次匹配定义的重载函数&#xff0c;最终选择最佳匹配的函数运行。模板也是一样的&#xff0c;但是在替换模板时&#xff0c;即使出现异常错误也不认为…...

【人工智能与深度学习】基于能量的模型

【人工智能与深度学习】基于能量的模型 概述能量基础模型(EBM)方法定义解决方案:基于梯度的推理有潜在变量的能量基础模型推理例子能量基础模型和机率模型的对比自由能(Free Energy)概述 我们现在介绍一个新框架来定义模型。它提供了一个统一和系列性的方式来定义「监督模型」…...

功能测试三年,是应该改变了

前言 测试行业3年多经验&#xff0c;学历大专自考本科&#xff0c;主要测试方向web&#xff0c;PC端&#xff0c;wap站&#xff0c;小程序公众号都测试过&#xff0c;app也测过一些&#xff0c;C端B端都有&#xff0c;除功能外&#xff0c;接口性能也有涉猎&#xff0c;但是不…...

基于STM32的ubuntu交叉编译环境的搭建(arm-gcc 8.2)

常用的STM32的软件开发方法都是基于MDK keil或IAR集成开发环境&#xff0c;但以上两个集成开发环境软件都是需要收费的&#xff0c;且价格较为昂贵。本节介绍一种在ubuntu上安装arm gcc&#xff08;arm-eabi&#xff09;的方式&#xff0c;用于编译STM32的程序。 1.在arm官网下…...

数据结构:二叉树概念篇(算法基础)

目录 一.有向树的图论基础 1.有向树的相关基本概念 有向树的基本定义: 有向树的结点的度&#xff1a; 有向树的度: 有向树的根结点,分枝结点,叶结点: 树的子树: 树结点的层次: 树的高度: 2.一个基本的数学结论 3.有序有向树 二.数据结构中树的顺序存储结构与链式存…...

华为OD机试真题Java实现【字符串变换最小字符串】真题+解题思路+代码(20222

字符串变换最小字符串 给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则:交换字符串中任意两个不同位置的字符。 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Java)真题目录汇总 ## 输入输出描述: …...

数字化转型的企业会用低代码平台深化重塑什么形态

随着数字化转型的浪潮不断推进&#xff0c;越来越多的企业开始关注如何更好地利用数字技术提高业务效率和创新能力。而低代码平台作为一种能够快速构建和部署应用程序的新型工具&#xff0c;正越来越受到企业的青睐。那么&#xff0c;数字化转型的企业会用低代码平台深化重塑什…...

【华为OD机试模拟题】用 C++ 实现 - 拼接 URL(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

六千字让你明白什么是数字孪生?

文章目录1. 背景2. 数字孪生基础2.1 概念2.2 价值3. 技术生态3.1 技术体系3.2 核心技术3.2.1 多领域、多尺度融合建模3.2.2 数据驱动与物理模型融合的状态评估3.2.3 数据采集和传输3.2.4 全生命周期数据管理3.2.5 虚拟现实呈现3.2.6 高性能计算3.3 建设3.3.1 重点3.3.1.1 数字孪…...

判断字符串是否是纯数字不包括符号(含符号显示False)isnumeric()和isdigit()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断字符串是否是纯数字 不包括符号&#xff08;含符号显示False&#xff09; isnumeric()和isdigit() [太阳]选择题 对于代码中当s为‘二十六’时isdigit()和isnumeric()输出的结果是? s …...

计算机408考研先导课---C语言难点2

目录 一、字符型数据与字符串型数据的比较 1、字符型数据特点 2、字符串型数据特点 二、字符数组 1、定义 2、输入输出 ①输入 ②输出 3、字符处理函数 ①put函数 ②gets函数 ③strcat函数 ④strcpy函数 ⑤strcmp函数 ⑥strlen函数 ⑦strlwr函数 ⑧strup…...

682. 棒球比赛

题目&#xff1a;你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成&#xff0c;过去几回合的得分可能会影响以后几回合的得分。 比赛开始时&#xff0c;记录是空白的。你会得到一个记录操作的字符串列表 ops&#xff0c;其中 ops[i] 是你需要记录的第 i 项操…...

【《C Primer Plus》读书笔记】第13章:文件输入/输出

【《C Primer Plus》读书笔记】第13章&#xff1a;文件输入/输出13.1 与文件进行通信13.1.1 文件是什么13.1.2 文本模式和二进制模式13.1.3 I/O的级别13.1.4 标准文件13.2 标准I/O13.3 一个简单的文件压缩程序13.4 文件I/O&#xff1a;fprintf()、fscanf()、fgets()和fputs()13…...

Datacom-HCIE考试经验分享

我是誉天Datacom秦同学。作为誉天众多通过Datacom-HCIE考试的学员之一&#xff0c;我感到很荣幸。 首先说说自学的感受吧&#xff1a; 我是从2020年开始接触网络行业的&#xff0c;听单位的前辈说华为的HCIE认证是行业含金量最高的证书&#xff0c;从那时起心里就种下了一个“I…...

第十二章 系统错误消息 - 一般系统错误消息 P - S

文章目录第十二章 系统错误消息 - 一般系统错误消息 P - S第十二章 系统错误消息 - 一般系统错误消息 P - S 错误代码描述<PARAMETER>由用户编写的函数引用或 Do 命令传递给标记行的参数数量超过了为标记行声明的形式参数的数量。<PRIVATE METHOD>已尝试调用一个私…...

【git】Idea中git的使用

配置git 创建git仓库 不同颜色代表的含义 红色——未加入版本控制&#xff1b;绿色——已经加入控制暂未提交&#xff1b;蓝色——加入&#xff0c;已提交&#xff0c;有改动&#xff1b;白色——加入&#xff0c;已提交&#xff0c;无改动&#xff1b;灰色——版本控制已忽略文…...

Centos安装Python、PyCharm

安装Python 1、打开终端(Terminal) 2、输入以下命令更新系统&#xff1a; sudo yum update 3、安装Python&#xff1a; sudo yum install python3 4、安装完成后&#xff0c;可以使用以下命令检查Python版本&#xff1a; python3 --version 安装PyCharm 1、下载PyCharm的安…...

搞百亿补贴,京东不能只“砸钱”

出品 | 何玺 排版 | 叶媛 京东“百亿补贴”真的要来了。 据多家媒体报道&#xff0c;京东“百亿补贴”已于2月23日启动内测。根据此前消息&#xff0c;京东“百亿补贴”频道将于3日晚8点正式上线。 在京东“百亿补贴”频道正式上线之前&#xff0c;我们来聊一聊“刘强东为什…...

automl介绍以及代码实例

使用AutoML来自动构建机器学习模型&#xff0c;可以使用多种不同的Python包&#xff0c;包括AutoGluon、TPOT、Auto-Keras等。AutoGluon可以自动搜索最佳模型&#xff0c;以便满足开发人员的需求&#xff1b;TPOT可以自动调整模型的参数&#xff0c;以获得更好的性能&#xff1…...

kill 与killall

【查询命令所属软件包】 rpm -qf /usr/bin/killall psmisc-22.20-15.el7.x86_64 rpm -qf /usr/bin/kill util-linux-2.23.2-65.el7_9.1.x86_64 【命令参数】 killallkill -e,--exact require exact match for very long names -I,--ignore-case case insensi…...

Foobar2000终极歌词体验:三平台逐字歌词完整配置指南

Foobar2000终极歌词体验&#xff1a;三平台逐字歌词完整配置指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质量的逐字歌词…...

Godot纸牌游戏框架:分层架构与卡牌状态管理

1. 这不是又一个“通用游戏框架”&#xff0c;而是一套专为纸牌游戏设计的骨骼系统你有没有试过在Godot里从零搭一张卡牌游戏&#xff1f;我试过三次——第一次用Node2D硬堆&#xff0c;拖了二十多个场景&#xff0c;连抽卡动画都得手写Tween&#xff1b;第二次改用Resource做卡…...

Photoshop到URP的法线验证闭环:跨引擎法线贴图精准调试指南

1. 这不是个“一键生成法线”的玩具&#xff0c;而是一套跨引擎、跨工作流的材质验证闭环你有没有遇到过这样的情况&#xff1a;在 Photoshop 里辛苦调出一张完美的 Normal Map&#xff0c;导入 Unity 后却发现高光方向反了、边缘发灰、贴图在 Decal 上拉伸变形&#xff0c;甚至…...

C++中的函数知识点大全

函数的定义不能嵌套但调用可以嵌套在函数调用时&#xff0c;如某一默认参数要指明一个特定值&#xff0c;则有其之前所有参数都必须赋值赋默认实参时 一旦某个形参被赋予了默认值&#xff0c;它后面的所有形参都必须有默认值&#xff0c;因为设置默认参数的顺序是自右向左&…...

通过Taotoken CLI工具一键配置多开发环境接入参数

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken CLI工具一键配置多开发环境接入参数 在接入大模型服务时&#xff0c;开发者常常需要为不同的开发工具&#xff08;如…...

安卓悬浮看图神器 置顶悬浮,随时查看更便捷

手机修图。对着原图比对。疯狂切换后台。记个账号密码。来回切应用。手指头都快戳出老茧。看小说找配图。切屏像在玩杂技。急需一款神器。专治各种切屏多动症。浮动图片&#xff08;安卓版&#xff09;全局置顶图片永远钉在最上层。盖住其他所有APP。随心操控自由拖动位置。随意…...

在自动化脚本中集成Taotoken API并观察其长时间运行的可靠性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在自动化脚本中集成Taotoken API并观察其长时间运行的可靠性 对于需要长时间、周期性调用大模型API的自动化任务而言&#xff0c;服…...

网络安全自学顺序|千万不要搞反了

网络安全自学顺序&#xff5c;千万不要搞反了 想入行网络安全&#xff1f;别瞎学&#xff01;这帮你少走半年弯路&#x1f447; 从0到1进阶路径&#xff08;按顺序学&#xff09;&#xff1a; 1.计算机网络基础&#xff08;TCP/IP、OSI模型&#xff09; 2.Linux系统与命令行…...

如何用Python自动化脚本高效抢购热门演出门票?智能抢票解决方案揭秘

如何用Python自动化脚本高效抢购热门演出门票&#xff1f;智能抢票解决方案揭秘 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为热门演唱会门票秒光而烦恼吗&#xff1…...

QKeyMapper:重新定义Windows输入控制的终极解决方案

QKeyMapper&#xff1a;重新定义Windows输入控制的终极解决方案 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper&#xff0c;Qt开发Win10&Win11可用&#xff0c;不修改注册表、不需重新启动系统&#xff0c;可立即生效和停止。支持游戏手柄映射到键鼠&#xff0c;手…...