C++标准模板(STL)- 类型支持 (属性查询,获取类型的对齐要求)

类型特性


类型特性定义一个编译时基于模板的结构,以查询或修改类型的属性。

试图特化定义于 <type_traits> 头文件的模板导致未定义行为,除了 std::common_type 可依照其所描述特化。

定义于<type_traits>头文件的模板可以用不完整类型实例化,除非另外有指定,尽管通常禁止以不完整类型实例化标准库模板。
 

属性查询

继承自 std::integral_constant

成员常量

value

[静态]

alignof(T)
(公开静态成员常量)

成员函数

operator std::size_t

转换对象为 std::size_t ,返回 value
(公开成员函数)

operator()

(C++14)

返回 value
(公开成员函数)

成员类型

类型定义
value_typestd::size_t
type

std::integral_constant<std::size_t, value>

获取类型的对齐要求

std::alignment_of

template< class T >
struct alignment_of;

(C++11 起)

提供等于 T 类型对齐要求的成员常量 value ,如同用 alignof 表达式获得。若 T 是数组类型,则返回元素类型的对齐要求,若 T 是引用类型,则返回备用用类型的对齐要求。

若 alignof(T) 不是合法表达式,则行为未定义。

辅助变量模板

template< class T >
inline constexpr std::size_t alignment_of_v = alignment_of<T>::value;

(C++17 起)

 可能的实现

template< class T >
struct alignment_of : 
std::integral_constant<std::size_t,alignof(T)> {};

注意

此类型特性先于 alignof 关键词出现,该关键词能用于较简明地获得相同值。

调用示例

#include <iostream>
#include <type_traits>

class A {};

class B
{
    int b;
};

class C
{
    int b;
    double c;
};

int main()
{
    std::cout << "std::alignment_of<int>::value:        "
              << std::alignment_of<int>::value << std::endl;
    std::cout << "std::alignment_of<double>::value:     "
              << std::alignment_of<double>::value << std::endl;
    std::cout << "std::alignment_of<char>::value:       "
              << std::alignment_of<char>::value << std::endl;
    std::cout << "std::alignment_of<uint8_t>::value:    "
              << std::alignment_of<uint8_t>::value << std::endl;
    std::cout << "std::alignment_of<uint64_t>::value:   "
              << std::alignment_of<uint64_t>::value << std::endl;
    std::cout << "std::alignment_of<std::string>::value:"
              << std::alignment_of<std::string>::value << std::endl;
    std::cout << "std::alignment_of<A>::value:          "
              << std::alignment_of<A>::value << std::endl;

    std::cout << "std::alignment_of<A>():               "
              << std::alignment_of<A>() << std::endl; // 另一种语法
    std::cout << "std::alignment_of<B>():               "
              << std::alignment_of<B>() << std::endl; // 另一种语法
    std::cout << "std::alignment_of<C>():               "
              << std::alignment_of<C>() << std::endl; // 另一种语法

    return 0;
}

输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/151574.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

本地视频AI人脸替换,一键启动,傻瓜式操作

本地无须准备配置和运行环镜&#xff0c;整个压缩包下载后解压&#xff0c;一键启动程序&#xff0c;只需一张照片和一个视频&#xff0c;就可以把视频中的人物替换成您想要的人脸。支持CPU和GPU解码&#xff0c;使用GPU解码速度较快。 所有使用的软件安装包已上传网盘&#x…

Ubuntu 20.04 调整交换分区大小

Ubuntu 调整交换分区大小 一、系统情况二、去除旧的交换分区文件三、配置并启用交换分区四、查看swap文件大小 一、系统情况 Ubuntu &#xff1a;Ubuntu 20.04.6 LTS 交换分区位置&#xff1a; cat /proc/swaps二、去除旧的交换分区文件 去掉旧的交换分区有两个步骤&#x…

【excel技巧】Excel表格里的图片如何批量调整大小?

Excel表格里面插入了很多图片&#xff0c;但是每张图片大小不一&#xff0c;如何做到每张图片都完美的与单元格大小相同&#xff1f;并且能够根据单元格来改变大小&#xff1f;今天分享&#xff0c;excel表格里的图片如何批量调整大小。 方法如下&#xff1a; 点击表格中的一…

DBA_IND_STATISTICS 字段含义

功能 展示数据库中所有索引的优化器统计信息。 字段说明 参考&#xff1a;https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000885743

贝加莱软件功能测试

通讯及稳定性测试 Profibus DP通讯、Modbus通讯、CANOPEN通讯测试 C1 C2 C3 测试目的 测试验证贝加莱控制系统各种现场总线通讯的性能及稳定性。验收标准 主站PLC可与现有总线仪表建立Profibus DP通讯、Modbus通讯或CANOPEN通讯&#xff0c;连续运行&#xff08;通讯状态应保…

万能自定义表单系统源码 支持收费表单+在线支付+活动报名 带前后端完整部署教程

随着互联网的快速发展&#xff0c;各种在线表单系统已经成为了许多企业和个人的必备工具。这些表单系统可以帮助用户收集信息、管理数据、进行在线支付等操作。然而&#xff0c;现有的表单系统往往不能满足所有用户的需求&#xff0c;所以这款万能自定义表单系统源码应用而生。…

内衣洗衣机和手洗哪个干净?迷你洗衣机品牌推荐

很多人会觉得内衣洗衣机是智商税&#xff0c;洗个内衣只需要两分钟的事情&#xff0c;需要花个几百块钱去入手一个洗衣机吗&#xff1f;然而清洗贴身衣物的并不是一件简单的事情&#xff0c;如果只是简单的搓洗&#xff0c;内裤上看不见的细菌也无法消除&#xff0c;而且对来生…

【ROS导航Navigation】五 | 导航相关的消息 | 地图 | 里程计 | 坐标变换 | 定位 | 目标点和路径规划 | 激光雷达 | 相机

致谢&#xff1a;ROS赵虚左老师 Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 参考赵虚左老师的实战教程 一、地图 nav_msgs/MapMetaData 地图元数据&#xff0c;包括地图的宽度、高度、分辨率等。 nav_msgs/OccupancyGrid 地图栅格数据&#…

Outlook搜索功能灰色

Outlook搜索功能灰色 故障现象&#xff1a; Outlook搜索邮件功能突然灰色&#xff0c;无法搜索邮件&#xff0c;搜索栏直接搜索的结果不准确&#xff0c;并提示服务被禁用。 故障截图&#xff1a; 故障原因&#xff1a; Windows search服务被禁用导致&#xff0c;需要重新开…

人工智能为游戏带来提升

人工智能为游戏带来提升 1提升游戏体验 提高吸引力 ​ 游戏中的****NPC 首先&#xff0c;出现和玩家相同水平&#xff08;甚至超越人类的&#xff09;的电脑玩家就已经足够吸引人了&#xff0c;尤其是一些游戏中如果可以产生一个和人类更加相似的NPC&#xff0c;无疑可以让玩…

论文阅读——RetNet

transformer的问题&#xff1a;计算量大&#xff0c;占用内存大&#xff0c;不好部署。 所以大家在找能解决办法&#xff0c;既能和transformer表现一样好&#xff0c;又能在推理阶段计算复杂度很低。 这些方法大概分类三类&#xff1a;一是代替transformer非线性注意力机制的…

MVMD(多元变分模态分解)

代码使用方法 多元变分模态分解 代码原理 多元变分模态分解(Multivariate Variational Mode Decomposition, MVMD)是一种信号分解方法&#xff0c;用于从多元时间序列数据中提取模态成分。 传统的变分模态分解(Variational Mode Decomposition, VMD)是一种基于优化方法的信号…

【税收相关】企业所得税值税、消费税、企业所得税、个人所得税、资源税、城市维护建设税、房产税、印花税、城镇土地使用税、土地增值税

【点我-这里送书】 本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》 公众号&#xff1a;JAVA开发王大师&#xff0c;专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生&#xff0c;期待你的…

3.1 Windows驱动开发:内核远程堆分配与销毁

在开始学习内核内存读写篇之前&#xff0c;我们先来实现一个简单的内存分配销毁堆的功能&#xff0c;在内核空间内用户依然可以动态的申请与销毁一段可控的堆空间&#xff0c;一般而言内核中提供了ZwAllocateVirtualMemory这个函数用于专门分配虚拟空间&#xff0c;而与之相对应…

Mac电脑好用的窗口管理软件 Magnet 中文for mac

Magnet是一款用于Mac操作系统的窗口管理工具&#xff0c;它可以帮助您快速和方便地组织和管理应用程序窗口&#xff0c;以提高您的工作效率和多任务处理能力。 以下是Magnet的一些主要功能和特点&#xff1a; 窗口自动调整&#xff1a;Magnet允许您通过简单的拖放操作或使用快…

计算机毕业设计选题推荐-一周穿搭推荐微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

python之使用深度学习创建自己的表情符号

目录 部署项目1、首先运行train.py训练模型2、接下运行gui.py测试 一、使用 CNN 进行面部情绪识别二、GUI 代码和表情符号映射 在这个深度学习项目中&#xff0c;我们将对人类面部表情进行分类&#xff0c;以过滤和映射相应的表情符号或头像。 数据集&#xff08;面部表情识别&…

《持续交付:发布可靠软件的系统方法》- 读书笔记(十四)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;十四&#xff09; 第 14 章 版本控制进阶14.1 引言14.2 版本控制的历史14.2.1 CVS14.2.2 SVN14.2.3 商业版本控制系统14.2.4 放弃悲观锁 14.3 分支与合并14.3.1 合并14.3.2 分支、流和持续集成 14.4 DVCS14.4.1 什么是 …

在Centos7.9_2207安装CDH6.3.2

在Centos7.9_2207安装CDH6.3.2 背景 笔者做大数据开发&#xff0c;实时部分一般要用到HBase、Kudu、Redis等组件来保证幂等性&#xff0c;为了方便&#xff0c;还是选用老古董CDH6.3.2【最后的免费版】做一个单节点机器&#xff0c;方便随时挂起。多节点虚拟机由之前的双路E5…

【UE5】显示或隐藏物体轮廓线

效果 步骤 1. 先下载所需的材质文件“M_Highlight.uasset” 材质下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rxmRhkUoXVq6-DkIKyBhAQ 提取码&#xff1a;55bv 2. 在视口中拖入后期处理体积 根据需求设置后期处理体积的大小或者直接设置无限范围&…