C++标准模板(STL)- 类型支持 (类型属性,检查类型是否拥有强结构相等性,std::has_strong_structural_equality)
类型特性
类型特性定义一个编译时基于模板的结构,以查询或修改类型的属性。
试图特化定义于 <type_traits> 头文件的模板导致未定义行为,除了 std::common_type 可依照其所描述特化。
定义于<type_traits>头文件的模板可以用不完整类型实例化,除非另外有指定,尽管通常禁止以不完整类型实例化标准库模板。
类型属性
检查类型是否拥有强结构相等性
std::has_strong_structural_equality
template< class T > | (C++20 起) |
若 T
拥有强结构相等性,则提供等于 true 的成员常量 value
。对于任何其他类型 value
为 false 。
模板形参
T | - | 要检查的类型 |
辅助变量模板
template< class T > | (C++20 起) |
继承自 std::integral_constant
成员常量
value [静态] | 若 T 拥有强结构相等性则为 true ,否则为 false(公开静态成员常量) |
成员函数
operator bool | 转换对象为 bool ,返回 value (公开成员函数) |
operator() (C++14) | 返回 value (公开成员函数) |
成员类型
类型 | 定义 |
value_type | bool |
type | std::integral_constant<bool, value> |
注解
此类型特征可用于检查一个类型能否用作非类型模板形参。
调用示例
#include <type_traits>
#include <cstring>
#include <algorithm>
#include <iostream>namespace std
{
template<typename... Ts> struct make_void
{typedef void type;
};
template<typename... Ts> using void_t = typename make_void<Ts...>::type;template <typename T, typename = void>
struct has_strong_structural_equality : std::false_type {};template <typename T>
struct has_strong_structural_equality<T, std::void_t<decltype(std::declval<T>() == std::declval<T>())>> : std::true_type
{template<typename, typename>static std::false_type test(...);using type = decltype(test<T, T>(0));
};template<typename T, typename U>
using has_strong_structural_equality_t = typename has_strong_structural_equality<T, U>::type;template <typename T>
const bool has_strong_structural_equality_v = has_strong_structural_equality<T>::value;
}class E
{
public:template<class T> E(T&&) { }
};class A {};
class B : public A {};
class C {};
class D
{
public:operator C(){return c;} C c;
};struct MyStruct
{int x;double y;
};// 自定义比较运算符
bool operator==(const MyStruct& lhs, const MyStruct& rhs)
{return lhs.x == rhs.x && lhs.y == rhs.y;
}int main()
{std::cout << std::boolalpha;std::cout << "std::has_strong_structural_equality<A>::value: "<< std::has_strong_structural_equality<A>::value << std::endl;std::cout << "std::has_strong_structural_equality<E>::value: "<< std::has_strong_structural_equality<E>::value << std::endl;std::cout << "std::has_strong_structural_equality<float>::value: "<< std::has_strong_structural_equality<float>::value << std::endl;std::cout << "std::has_strong_structural_equality<int>::value: "<< std::has_strong_structural_equality<int>::value << std::endl;std::cout << "std::has_strong_structural_equality<char>::value: "<< std::has_strong_structural_equality<char>::value << std::endl;std::cout << "std::has_strong_structural_equality<bool>::value: "<< std::has_strong_structural_equality<bool>::value << std::endl;std::cout << "std::has_strong_structural_equality<MyStruct>::value:"<< std::has_strong_structural_equality<MyStruct>::value << std::endl;std::cout << "-----------------------------------------------" << std::endl;std::cout << std::endl;return 0;
}
输出
std::has_strong_structural_equality<A>::value: false
std::has_strong_structural_equality<E>::value: false
std::has_strong_structural_equality<float>::value: true
std::has_strong_structural_equality<int>::value: true
std::has_strong_structural_equality<char>::value: true
std::has_strong_structural_equality<bool>::value: true
std::has_strong_structural_equality<MyStruct>::value:true
-----------------------------------------------
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
C++标准模板(STL)- 类型支持 (类型属性,检查类型是否拥有强结构相等性,std::has_strong_structural_equality)
类型特性 类型特性定义一个编译时基于模板的结构,以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为,除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…...
![](https://img-blog.csdnimg.cn/img_convert/4cb1afd7a971b30f3885a7fe94814cbc.png)
《中国数据库前世今生》观影——2000年代/数据库分型及国产数据库开端
引出 《中国数据库前世今生》观影——2000年代/数据库分型及国产数据库开端 第3集:2000年代/数据库分型及国产数据库开端 y2k问题 千年虫,又叫做“计算机2000年问题”“电脑千禧年千年虫问题”或“千年危机”。缩写为“Y2K]”。是指在某些使用了计算机…...
![](https://www.ngui.cc/images/no-images.jpg)
图的同态Graph Homomorphism与同构Graph Isomorphism
图的同态Graph Homomorphism 图的同态(Graph Homomorphism)是图论中的一个重要概念,用于描述图之间的一种映射关系。图的同态描述了一个图如何通过映射保留其边的结构。 ### 图的同态定义 设有两个图 \( G (V_G, E_G) \) 和 \( H (V_H, …...
![](https://i-blog.csdnimg.cn/direct/1f8374eaac1b46ab94a4ce008ccb63e1.png)
使用 Python 对雷达卫星 sar 图像进行降噪的三种方法
合成孔径雷达 (SAR) 图像广泛应用于各种领域(航空航天、军事、气象等)。问题是这种图像在其原始格式中受到噪点的影响。虽然这些图像通常也是沉重的文件,但从科学的角度来看,有效地对其进行去噪的任务似乎既具有挑战性,又在现实世界中非常有用。 卫星图像有两大类: 光学…...
![](https://i-blog.csdnimg.cn/direct/ae5d0244e5e349f1b805c06df0fb97dc.png)
C# Unity 面向对象补全计划 之 初识继承方法与多态
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝 1.继承方法 C# & Unity 面向对象补全计划 之 继承(字段与属性&…...
![](https://www.ngui.cc/images/no-images.jpg)
突破PyCharm索引瓶颈:提升文件索引速度的策略
突破PyCharm索引瓶颈:提升文件索引速度的策略 PyCharm作为Python开发者的首选IDE,以其强大的功能和灵活的配置而广受好评。然而,当处理大型项目或复杂文件结构时,文件索引慢的问题可能会显著降低开发效率。本文将提供一系列优化技…...
![](https://www.ngui.cc/images/no-images.jpg)
体素相关的快速计算
“体素”通常是指在三维空间中具有固定尺寸和位置的小立方体单元。 体素的优点包括: 易于处理和计算:在计算机图形学和三维建模中,体素的结构相对简单,计算和操作较为方便。能精确表示物体的内部结构:对于一些需要了…...
![](https://i-blog.csdnimg.cn/direct/922ee03a503a43afaff011944dc42f94.png)
Python 爬虫项目实战(二):爬取微博热搜榜
前言 网络爬虫(Web Crawler),也称为网页蜘蛛(Web Spider)或网页机器人(Web Bot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓…...
![](https://i-blog.csdnimg.cn/direct/ba15aa5c0e7a42d7b36cc62d6ea565c1.png)
文件解析漏洞复现
一、IIS 6.X 1.在网站目录创建文件夹名为xxx.asp/xxx.asa 文件夹,里面的任意文件都会被当作asp文件执行 创建1.asp 访问 2.ooo.asp.jpg会被当做asp文件执行 创建一个ooo.asp;.jpg 访问 二、IIS 7.X 上传1.jpg文件在网址后/.php可以成功执行 写一个1.jpg文件内容…...
![](https://www.ngui.cc/images/no-images.jpg)
git push报错 pre-receive hook declined
今天使用git提交的代码的时候,不然报错 pre-receive hook declined提交不上去,昨天还好好的。 经过检查发现,原来对应的分支被leader设置成受保护分支了,导致代码提交不上去。 然后在git管理平台取消分支保护,或者将我…...
![](https://www.ngui.cc/images/no-images.jpg)
打造个性化代码审查工具:在Perl中实现自定义审查的艺术
打造个性化代码审查工具:在Perl中实现自定义审查的艺术 代码审查是软件开发过程中的关键环节,它有助于提高代码质量和发现潜在缺陷。Perl作为一种灵活的编程语言,提供了丰富的特性,使得在Perl中实现自定义的代码审查工具成为可能…...
![](https://img-blog.csdnimg.cn/direct/25f61fadc35f491dae24742ab85fd90a.png)
RabbitMq架构原理剖析及应用
文章目录 RabbitMQ 架构组件1. **Broker** (Broker Server)2. **Exchange**3. **Queue**4. **Producer** (消息生产者)5. **Consumer** (消息消费者)6. **Virtual Hosts** (虚拟主机) 工作流程内部原理1. **队列管理**2. **集群**3. **持久化与内存**4. **性能优化** 高级特性1…...
![](https://www.ngui.cc/images/no-images.jpg)
c# 对接第三方接口实现签名
官网文档要求如下: Sign算法说明 举例:假设请求参数键值对如下 appkey : test2-xx page_no : 0 end_time : 2016-08-01 13:00:00 start_time : 2016-08-01 12:00:00 page_size : 40 sid : test2 timestamp : 1470042310 第一步 对数所有请求参数按照…...
![](https://i-blog.csdnimg.cn/direct/7c33b155db914c0f885a8bedd3d9e22f.png)
数学建模评价类模型—层次分析法(无数据情况下)
目录 前言 一、评价类问题概述 二、AHP建模流程 1、过程描述 2、层次分析法—Matlab代码 三、权重计算 1、算术平均法 2、几何平均法 3、特征值法 目录 文章目录 前言 一、评价类问题概述 二、AHP建模流程 1、过程描述 2、层次分析法—Matlab代码 三、权重计算 算术平均法 前言…...
![](https://i-blog.csdnimg.cn/direct/138559c0f7dc4e7a914e04a9e75df90e.png)
模拟实现strcat(字符串追加)
1.我们要知道stcat的作用是什么,字符串追加。 2.我们进行模仿,我们先将arr1不断,直到“\0”,我们加在后面。 //模拟实现strcat(字符串追加) char* my_strcat(char* arr1, const char* arr2) {assert(arr1 && arr2);char ret arr1;…...
![](https://www.ngui.cc/images/no-images.jpg)
HTTP简单概述
一. HTTP HTTP(HyperText Transfer Protocol)是用于在客户端和服务器之间传输超文本数据(如HTML)的应用层协议。它是万维网的基础协议,定义了浏览器和服务器之间如何请求和传输文档。HTTP有多个版本,每个版…...
![](https://www.ngui.cc/images/no-images.jpg)
掌握PyCharm代码片段管理器:提升编码效率的秘诀
掌握PyCharm代码片段管理器:提升编码效率的秘诀 PyCharm作为业界领先的集成开发环境(IDE),提供了许多便利的功能来提升开发者的编码效率,其中之一就是代码片段管理器。代码片段管理器允许开发者保存、管理和重用代码模…...
![](https://i-blog.csdnimg.cn/direct/e08e8f9de14b466ebb7d73db44e19c35.png)
MyBatis动态代理和映射器
目录 1、映射器简介 (1)什么是mapper动态代理? (2)动态代理的规范 (3)如何使用动态代理 (4)为什么学映射器 (5)映射器与接口 (…...
![](https://i-blog.csdnimg.cn/direct/ad6cc4f58c5c443ea92e4cf61055f534.png)
ShardingSphere中的ShardingJDBC常见分片算法的实现
文章目录 ShardingJDBC快速入门修改雪花算法和分表策略核心概念分片算法简单INLINE分片算法STANDARD标准分片算法COMPLEX_INLINE复杂分片算法CLASS_BASED自定义分片算法HINT_INLINE强制分片算法 注意事项 ShardingJDBC Git地址 快速入门 现在我存在两个数据库,并…...
![](https://i-blog.csdnimg.cn/direct/269262a1e8ea4031896250b75817425d.png)
SpringBoot整合Flink CDC实时同步postgresql变更数据,基于WAL日志
SpringBoot整合Flink CDC实时同步postgresql变更数据,基于WAL日志 一、前言二、技术介绍(Flink CDC)1、Flink CDC2、Postgres CDC 三、准备工作四、代码示例五、总结 一、前言 在工作中经常会遇到要实时获取数据库(postgresql、m…...
![](https://www.ngui.cc/images/no-images.jpg)
ThinkPHP事件的使用
技术说明 1.ThinkPHP版本:支持6.0、8.0 2.使用场景:用户登陆后日志记录、通知消息发送等主流程、次流程分离等场景 3.说明:网上很多帖子说的不明不白的,建议大家自己手动尝试总结一下 4.事件手动绑定的时候,一定要…...
![](https://i-blog.csdnimg.cn/direct/0fdfe1cf10b449b98cd041877b3eee25.png)
【Nuxt】服务端渲染 SSR
SSR 概述 服务器端渲染全称是:Server Side Render,在服务器端渲染页面,并将渲染好HTML返回给浏览器呈现。 SSR应用的页面是在服务端渲染的,用户每请求一个SSR页面都会先在服务端进行渲染,然后将渲染好的页面…...
![](https://i-blog.csdnimg.cn/direct/4737c17b809744868e7f26ba625cdf0e.png)
Spring Boot整合WebSocket
说明:本文介绍如何在Spirng Boot中整合WebSocket,WebSocket介绍,参考下面这篇文章: WebSocket 原始方式 原始方式,指的是使用Spring Boot自己整合的方式,导入的是下面这个依赖 <dependency><g…...
![](https://i-blog.csdnimg.cn/direct/f4c7d0e459bc4134b5f29c258146cc8f.png)
《LeetCode热题100》---<5.③普通数组篇五道>
本篇博客讲解LeetCode热题100道普通数组篇中的五道题 第五道:缺失的第一个正数(困难) 第五道:缺失的第一个正数(困难) 方法一:将数组视为哈希表 class Solution {public int firstMissingPosi…...
![](https://i-blog.csdnimg.cn/direct/f91a7d44c1d54214ad54c05116416189.png)
Cocos Creator文档学习记录
Cocos Creator文档学习记录 一、什么是Cocos Creator 官方文档链接:Hello World | Cocos Creator 百度百科:Cocos Creator_百度百科 Cocos Creator包括开发和调试、商业化 SDK 的集成、多平台发布、测试、上线这一整套工作流程,可多次的迭…...
![](https://i-blog.csdnimg.cn/direct/a94d702d077242e1bbf215fc3ddc9c54.png)
插入数据优化 ---大批量数据插入建议使用load
一.insert优化 1.批量插入 2.手动提交事务 3.主键顺序插入 二.大批量插入数据 如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。操作如下 1.客户端连接服务端时,加入参数 --local-infine mysql --local-infine…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?
欢迎来到 CILMY23 的博客 🏆本篇主题为:一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向? 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Py…...
![](https://i-blog.csdnimg.cn/direct/a63bbc83e7614ceb81e19933c9bbcd2d.png)
svn软件总成全内容
SVN软件总成 概述:本文为经验型文档 目录 D:\安装包\svn软件总成 的目录D:\安装包\svn软件总成\svn-base添加 的目录D:\安装包\svn软件总成\tools 的目录D:\安装包\svn软件总成\tools\sqlite-tools-win32-x86-3360000 的目录D:\安装包\svn软件总成\安装包-----bt lo…...
![](https://i-blog.csdnimg.cn/direct/0cd535678d4b41c78be515d03188ec33.png)
[激光原理与应用-118]:电源系统的接地详解:小信号的噪声干扰优化,从良好外壳接地开始
目录 一、电路的基本原理:电流回路 1、电流回路的基本概念 2、电流回路的特性 3、电流回路的类型 4、电流回路的应用 五、电流回路的注意事项 二、交流设备的接地 1.1 概述 1、交流工作接地的定义 2、交流工作接地的作用 3、交流工作接地的规范要求 4、…...
![](https://img-blog.csdnimg.cn/img_convert/17c9fdc07691c0590cca89098895573f.jpeg)
回测本身就是一种过度拟合?
这也许是一个絮絮叨叨的专题,跟大伙儿唠一唠量化相关的小问题,有感而发写到哪算哪,这是第一期,先唠个10块钱的~ 前段时间在某乎上看到这样一个问题『您怎么理解回测本身就是一种过度拟合?』 个人看来,回测本…...
![](/images/no-images.jpg)
我想做网站 怎么做呢/优化大师免费安装下载
外接键盘时,如果没反应,可重启手机,再接就可以了。用便签应用测试 OK。五笔输入法:触宝输入法装好后,五笔 要另下载个包,还有手写也一样。插上键盘就可以输入中文了。很简单。 经过测试。noppoo 84 mini 双…...
![](/images/no-images.jpg)
南宁网站建设索王道下拉/app营销策略有哪些
什么是PHP?PHP(外文名 Hypertext Preprocessor,中文名“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语…...
国外网站制作/百度平台推广的营销收费模式
你能够轻松地配置 Plasma 桌面并且使用它大量方便且节省时间的特性来加速你的工作,拥有一个能够帮助你而非阻碍你的桌面环境。-- Nick Congleton众所周知,KDE 的 Plasma 是 Linux 下最强大的桌面环境之一。它是高度可定制的,并且看起来也很棒…...
![](/images/no-images.jpg)
wordpress应用软件下载主题/网络宣传渠道有哪些
给女朋友记账的站点开张了,http://www.eeshou.com/改为“我的账本”,HOHO:)转载于:https://www.cnblogs.com/treeyh/archive/2008/11/18/1335597.html...
![](/images/no-images.jpg)
怎么用div布局做网站/怎么做电商创业
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#define B breakvoid de(int timee){unsigned long int start,stop;struct timeval str;struct timeval stp;gettimeofday(&str,NULL);startstr.tv_usec;while(1){ gettimeofday(&stp,NUL…...
![](https://img-blog.csdnimg.cn/img_convert/259253083f358ee0b63fdcd25489f5c0.png)
苏州党员两学一做网站/免费制作网站的平台
关于作者前滴滴出行技术专家,现任OPPO文档数据库mongodb负责人,负责oppo千万级峰值TPS/十万亿级数据量文档数据库mongodb内核研发及运维工作,一直专注于分布式缓存、高性能服务端、数据库、中间件等相关研发。后续持续分享《MongoDB内核源码设…...