C++20中的指定初始化器(designated initializers)
指定初始化器(designated initializers, 指定初始值设定项)语法如下:C风格指定初始化器语法,初始化数据成员的一种便捷方式
T object = { .des1 = arg1, .des2 { arg2 } ... };
T object { .des1 = arg1, .des2 { arg2 } ... };
说明:
1.每个指示符(designator)必须命名T的直接非静态数据成员,并且表达式中使用的所有指示符必须以与T的数据成员相同的顺序出现。
2.使用点运算符(.)后跟成员名称来指定要初始化的成员。
3.禁止收缩转换(narrowing conversion)。
4.每个联合(union)只能提供一个初始化器。
5.指定初始化器列表中未明确列出的任何成员字段均会进行默认初始化。
6.也可用于初始化嵌套的结构或数组(nested structs or arrays),但指示符不能嵌套。
7.不能混合designated and non-designated initialization。
以下为测试代码:
namespace {struct A { int x; int y; int z; };
union u { int a; const char* b; };struct B {std::string str;int n = 42;int m = -1;
};struct D {A a;int m;int n;
};} // namespaceint test_designated_initializers()
{A a{ .x = 1, .z = 2 }; // a.y initialized to 0std::cout << "value: " << a.x << "," << a.y << "," << a.z << std::endl;A b = { .y{1}, .z{2} }; // b.x initialized to 0std::cout << "value: " << b.x << "," << b.y << "," << b.z << std::endl;//A c{ .y = 2, .x = 1 }; // error; designator order does not match declaration orderu f = { .b = "blog" }; // active member of the union is bstd::cout << "value: " << f.b << std::endl;B x{ .m = 8 };std::cout << "value: " << x.str << "," << x.n << "," << x.m << std::endl;//B y{ .str{"c++20"}, .n{6}, 8 }; // error C7556: 不能将指定初始值设定项与非指定初始值设定项混合//D t{ .a.x{1} }; // error C7558: 标准C++指定初始值设定项中不允许嵌套的成员访问; 请使用嵌套的初始值设定项列表D w{ .a{a}, .m{6}, .n{8} };std::cout << "value: " << w.a.x << "," << w.a.y << "," << w.a.z << "," << w.m << "," << w.n << std::endl;return 0;
}
执行结果如下图所示:

GitHub:https://github.com/fengbingchun/Messy_Test
相关文章:
C++20中的指定初始化器(designated initializers)
指定初始化器(designated initializers, 指定初始值设定项)语法如下:C风格指定初始化器语法,初始化数据成员的一种便捷方式 T object { .des1 arg1, .des2 { arg2 } ... }; T object { .des1 arg1, .des2 { arg2 } ... }; 说明: 1.每个指…...
QT跨平台开发(windows、mac)中.pro文件设置
方法一: 在配置前面加上平台标识符的前缀 # windows win32:INCLUDEPATH F:/Dev/ffmpeg-4.3.2/include win32:LIBS -LF:/Dev/ffmpeg-4.3.2/lib \-lavcodec \-lavdevice \-lavfilter \-lavformat \-lavutil \-lpostproc \-lswscale \-lswresample# mac macx:INCLUD…...
wifi中的stream parser
在Wi-Fi系统中,流解析器(Stream Parser)的主要功能是将传输的数据流(bit stream)按照物理层(PHY)和媒体访问控制层(MAC)协议的要求进行分解和处理。这一步骤对于确保数据…...
GitHub网页打开慢的解决办法
有时候看资料絮叨github网页打不开,经百度后,发下下面的方法有效。 1)获取github官网ip 我们首先要获取github官网的ip地址,方法就是打开cmd,然后ping 找到github的地址:20.205.243.166 2)配…...
前端vue 实现取色板 的选择
大概就是这样的 一般的web端框架 都有自带的 的 比如 ant-design t-design 等 前端框架 都是带有这个的 如果遇到没有的我们可以自己尝试开发一下 简单 的 肯定比不上人家的 但是能用 能看 说的过去 我直接上代码了 其实这个取色板 就是一个input type 是color 的input …...
[leetcode]partition-list 分隔链表
. - 力扣(LeetCode) class Solution { public:ListNode* partition(ListNode* head, int x) {ListNode *smlDummy new ListNode(0), *bigDummy new ListNode(0);ListNode *sml smlDummy, *big bigDummy;while (head ! nullptr) {if (head->val &l…...
Apache功能配置:访问控制、日志分割; 部署AWStats日志分析工具
目录 保持连接 访问控制 只允许指定ip访问 拒绝指定主机其他正常访问 用户授权 日志格式 日志分割 操作步骤 使用第三方工具cronolog分割日志 AWStats日志分析 操作步骤 访问AwStats分析系统 保持连接 Apache通过设置配置文件httpd-default.conf中相关的连接保持参…...
开源可视化Flutter图表库:Graphic
Graphic:用Graphic绘制数据的无限可能- 精选真开源,释放新价值。 概览 Graphic,这个基于Flutter的图表库,以其源自《The Grammar of Graphics》的灵感,为数据可视化提供了一种全新的方法。它不仅仅是一个工具…...
Linux搭建Socks5网络代理服务器,Centos 8 系统
一、目的用途 用于网络代理转发请求,隐藏真实的请求ip地址,或者用于绕过网络限制的目标服务器,将自己的访问请求到代理服务器,通过网络代理服务器将请求转发到目标服务器 二、安装Socks5前的准备 1、从官网下载ss5安装包…...
mysql 导出导入 数据库
导出 MySQL 数据库可以通过多种方法实现,最常见的方法是使用 mysqldump 工具。以下是一些常用的导出 MySQL 数据库的方法: 使用 mysqldump 工具 mysqldump 是一个命令行工具,用于导出 MySQL 数据库的结构和数据。以下是基本的导出命令&…...
linux_进程概念——理解冯诺依曼体系结构
前言: 本篇内容是为了让友友们较好地理解进程的概念, 而在真正了解进行概念之前, 要先了解一下冯诺依曼体系结构。 所以博主会先对冯诺伊曼体系结构进行解释, 然后再讲解进程的概念。 ps: 本篇内容适合了解一些linux指…...
Linux笔记之使用系统调用sendfile高速拷贝文件
Linux笔记之使用系统调用sendfile高速拷贝文件 code review! 文章目录 Linux笔记之使用系统调用sendfile高速拷贝文件sendfile 性能优势sendfile 系统调用优点:缺点: cp 命令优点:缺点: 实际测试:拷贝5.8个G的文件&a…...
OpenCV和PIL进行前景提取
摘要 在图像处理和分析中,前景提取是一项关键技术,尤其是在计算机视觉和模式识别领域。本文介绍了一种结合OpenCV和PIL库的方法,实现在批量处理图像时有效提取前景并保留原始图像的EXIF数据。具体步骤包括从指定文件夹中读取图像,…...
Linux虚拟化大师:使用 KVM 和 QEMU 进行高级虚拟化管理
Linux 虚拟化大师:使用 KVM 和 QEMU 进行高级虚拟化管理 虚拟化技术是现代数据中心的核心技术之一,它可以将一台物理服务器分割成多个虚拟机,从而提高资源利用率,降低成本,并增强系统的灵活性和可扩展性。KVM…...
CentOS-6的iso下载地址镜像yum源
CentOS6下载地址镜像yum源 从 CentOS官网 Vault Mirror 过期镜像库下载 下载iso光盘镜像,使用其提供的yum源 vault:保险库,墓穴 , Vault Mirror 是官方对过期镜像库的取名 CentOS官网 Vault Mirror 过期镜像库 可下载CentOS2,3,4,5,6,7,8 CentOS-Vault.repo对应的是发行该镜…...
【python】PyQt5可视化开发,鼠标键盘实现联动界面交互逻辑与应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
Raw Socket(一)实现TCP三次握手
实验环境: Windows物理机:192.168.1.4 WSL Ubuntu 20.04.6 LTS:172.19.32.196 Windows下的一个http服务器:HFS,大概长这个样子: 客户端就是Ubuntu,服务端就是这个…...
考研数学开始的晚?别慌,超全复习规划拿去抄
实话实说,从七月中旬考研数一复习完真的有点悬,需要超级高效快速... 数二的时间也有点紧张...🥺 中间基本没有试错的时间,让你换老师换习题尝试,必须从头到尾规划好 而且相信你也不止自己,有很多考研党都是…...
创建React 项目的几种方式
①.react自带脚手架 使用步骤: 1、下载 npm i create-react-app -g 2、创建项目命令: create-react-app 项目名称 ②.Vite构建工具创建react步骤:(推荐) 方法一: 1、yarn create vite 2、后续根据提示步…...
探索Kotlin:从K1到K2
人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 嘿,小伙伴们!今天我们来聊聊Kotlin,这个在安卓开发圈里越来越火的编程语言。…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
