C++ enum class转常量

embedded/2024/12/22 16:41:48/

当使用 enum class 时,它具有更强的类型安全性和隔离性,因此需要显式转换才能访问其底层整数值。
std::underlying_type_t 是一个类型别名,它返回枚举类型的底层类型。
to_underlying 函数提供了一种方便的方式来执行这种转换,特别是在需要频繁进行此类转换的情况下。

#include <type_traits>
#include <utility>
#include <cstdint>
#include <iostream>template <class T, std::enable_if_t<std::is_enum_v<T>, int> = 0>
constexpr std::underlying_type_t<T> to_underlying(T t) noexcept {return static_cast<std::underlying_type_t<T>>(t);
}template <class T, std::enable_if_t<!std::is_enum_v<T>, int> = 0>
constexpr T to_underlying(T t) noexcept {return t;
}void test() {enum class E : std::uint8_t { A = 0, B, C };   int x = to_underlying(E::B);int x1 = to_underlying(E::A);std::cout << x << "," << x1 << std::endl;
}

输出: 1,0


创作不易,小小的支持一下吧!


http://www.ppmy.cn/embedded/59112.html

相关文章

使用Python和MediaPipe实现手势控制音量(Win/Mac)

1. 依赖库介绍 OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它包含了数百个计算机视觉算法。 MediaPipe MediaPipe是一个跨平台的机器学习解决方案库&#xff0c;可以用于实时人类姿势估计、手势识…

kali安装vulhub遇到的问题及解决方法(docker及docker镜像源更换)

kali安装vulhub&#xff1a; 提示&#xff1a;项目地址 https://github.com/vulhub/vulhub 项目安装&#xff1a; git clone https://github.com/vulhub/vulhub.git 安装docker 提示&#xff1a;普通用户请使用sudo&#xff1a; 首先安装 https 协议、CA 证书 apt-get in…

网络安全监控与入侵检测:使用Snort、Suricata等工具进行入侵检测

网络安全监控与入侵检测&#xff1a;使用Snort、Suricata等工具进行入侵检测 随着网络攻击手段的不断演变和升级&#xff0c;企业和个人面临着前所未有的安全挑战。网络安全监控与入侵检测是构建坚不可摧的网络安全防线的重要环节。通过实时监控网络流量和系统活动&#xff0c…

oracle控制文件详解以及新增控制文件

文章目录 oracle控制文件1、 控制文件包含的主要信息如下&#xff1a;2、查看目前系统的控制文件信息&#xff0c;主要是查看相关的字典视图 oracle新增控制文件 oracle控制文件 控制文件是一个很小的二进制文件(10MB左右)&#xff0c;含有数据库结构信息&#xff0c;包括数据…

【vueUse库Reactivity模块各函数简介及使用方法--下篇】

vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法: vueUse库Sensors模块各函数简介及使用方法 vueUseReactivity函数1. refWith…

【国产开源可视化引擎Meta2d.js】鹰眼地图

鹰眼地图 画布右下角弹出一个缩略导航地图&#xff0c;鼠标点击可以跳到指定位置。 在线体验&#xff1a; 乐吾乐2D可视化 示例&#xff1a; // 显示缩略地图 meta2d.showMap();// 关闭缩略地图 meta2d.hideMap();

SpringCloud--Eureka集群

Eureka注册中心集群 为什么要集群 如果只有一个注册中心服务器&#xff0c;会存在单点故障&#xff0c;不可以高并发处理所以要集群。 如何集群 准备三个EurekaServer 相互注册&#xff0c;也就是说每个EurekaServer都需要向所有的EureakServer注册&#xff0c;包括自己 &a…

C# 做一个临时的对象结构,并用linq查找

在C#中&#xff0c;可以使用匿名类型来创建一个临时的对象结构&#xff0c;并使用LINQ来查询这些对象。以下是一个简单的例子&#xff1a; using System; using System.Linq; using System.Collections.Generic;public class Program {public static void Main(){// 创建一个匿…