C++ 实现 std::is_shared_ptr、std::is_unique_ptr 模板(判断是否为智能指针)

为什么要单独实现这两个模板呢?这取决于编译器版本,在相对低的编译器版本上面,可能没有办法适用这两个库。

比如:

C++ 11 标准上面,是不支持这两个SFINAE测试模板的

C++ 17 也并非任何版本都支持,如果想要保证代码在编译器上面的通用性,我们是需要自行实现这两个模板类的。

实现是很容易的,可以直接复制下面的代码:

用法:is_shared_ptr<T>::value

我个人建议人们可以把它放在一个公用的命名空间之中,这类偏STL的,命名空间就叫做STL挺好的,STD是标准库的名字空间,STL就是我们替代标准库实现的一些功能的名字空间。

    template<typename T>struct is_shared_ptr : false_type {};template<typename T>struct is_shared_ptr<std::shared_ptr<T>> : true_type {};template<typename T>struct is_unique_ptr : false_type {};template<typename T>struct is_unique_ptr<std::unique_ptr<T>> : true_type {};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 中如何模块化使用 Vuex

在 Vue 中使用 Vuex 进行模块化管理状态非常简单&#xff0c;以下是一个基本的代码示例&#xff1a; 在 main.js 中引入 Vuex&#xff1a; import Vue from vue import Vuex from vuexVue.use(Vuex)// 创建 store const store new Vuex.Store({// 定义状态state: {count: 0}…

【教学类-综合练习-08】20240105 大3班 综合材料(美术类:骰子、面具、AB手环)

背景需求 年终了&#xff0c;清理库存&#xff0c;各种打印的题型纸都拿出来&#xff0c;当个别化学习材料 教学过程&#xff1a; 时间&#xff1a;2024年1月2日上午 班级&#xff1a;大3班&#xff08;2周才去一次&#xff09; 人数&#xff1a;17人

堆能高效解决的经典问题(算法村第十四关白银挑战)

数组中的第K个最大元素 215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 **k** 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元…

后端开发_单元测试

后端开发_单元测试 1. 简介2. JUnit 4使用方法2.1 jar包引入2.2 测试用例1. 简介 2. JUnit 4使用方法 2.1 jar包引入 1. 本地依赖引入方式 Junit4.jar包 2. maven方式引入jar <dep

SpringSecurity认证登录成功后获取角色菜单

目录 前言 一、RBAC模型 二、实战应用 1. 建立用户、角色、资源实体类 2. 数据层查询角色资源 3. 业务层实现&#xff0c;调用数据层查询接口 4. SystemController控制器菜单获取方法 5. menu.jsp菜单页面实现 前言 本篇文章接SSM项目集成Spring Security 4.X版本&…

【Java程序员面试专栏 专业技能篇】计算机网络核心面试指引

关于计算机网络部分的核心知识进行一网打尽,包括计算机的网络模型,各个层的一些重点概念,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 分层基本概念 计算机网络模型的分层及具体作用 计算机网络有哪些分层模型 可以按照应用层到物…

2023春秋杯冬季赛 --- Crypto wp

文章目录 前言Cryptonot_wiener 前言 比赛没打&#xff0c;赛后随便做一下题目 Crypto not_wiener task.py: from Crypto.Util.number import * from gmpy2 import * import random, os from hashlib import sha1 from random import randrange flagb x bytes_to_long(f…

量化交易学习1

一、股票数据基本分类 可分为&#xff08;1&#xff09;技术面数据和&#xff08;2&#xff09;基本面数据 &#xff08;1&#xff09;技术面数据 技术面数据是通过股票的历史价格和交易量等市场数据进行计算和分析得出的指标。常用的技术指标包括移动平均线、相对强弱指标、…

在上海做程序员这么多年,退休后我的工资是多少?

大家好&#xff0c;我是拭心。 最近看到一个很可惜的事&#xff1a;有个阿姨在深圳缴纳了 12 年社保&#xff0c;第 13 年家里突然有事不得不回老家&#xff0c;回去后没再缴纳社保&#xff0c;结果退休后无法领退休工资&#xff0c;还得出来打工赚钱。 之所以这样&#xff0…

C++(11):反复调用,call_once保证只能被执行一次

C++(11):多线程调用,确保单次执行的call_once_c++ 单次执行函数-CSDN博客 介绍了call_once在多线程竞争的环境下,能确保函数只被执行一次。 call_once在反复被调用时,也可以确保只被调用一次: #include <iostream> #include <thread> #include <chrono&g…

重温经典struts1之自定义Filter(拦截器)解决中文乱码问题

重温经典struts1之自定义Filter解决中文乱码问题 前言Filter&#xff08;拦截器&#xff09;需求具体实现步骤1. 自定义CharsetEncodingFilter拦截类2 将自定义CharsetEncodingFilter注册到web.xml3 编写测试用的login页面和处理逻辑 总结 前言 页面输入的中文&#xff0c;Act…

c++编译报错:xxx was not declared in this scope

根本原因&#xff1a;变量、函数、或者类未声明或者定义。 实际原因&#xff1a;被调用的代码&#xff0c;写在调用处的下面了&#xff0c;比如&#xff1a; void funcA(){funcB();// do something }void funcB(){// do something }这就会报错&#xff1a;funcB was not decla…

UF_UI_select_with_single_dialog()通过单选对话框选择单个对象。对象可以通过光标或输入名称进行选择。对象被突显出来。

int response0;//返回用户操作类型&#xff0c;点了哪一种返回取消或者确定tag_t objtagNULL_TAG;//输出选择对象tag;double cursor[ 3 ];//输出光标位置tag_t view_tagNULL_TAG;//输出视图tag;UF_UI_select_with_single_dialog("请选择一个对象","获取对象类型…

无人机航迹规划(五):七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、七种算法&#xff08;DBO、LO、SWO、COA、LSO、KOA、GRO&#xff09;简介 1、蜣螂优化算法DBO 蜣螂优化算法&#xff08;Dung beetle optimizer&#xff0c;DBO&#xff09;由Jiankai Xue和Bo Shen于2022年提出&#xff0c;该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

全球先端实验室护肤品牌德妃DERMAFIRM连续6年荣获“韩国第一品牌大奖”

全球先端实验室护肤品牌德妃(DERMAFIRM)在韩国消费者论坛主办的“2024年韩国第一品牌大奖(KOREA FIRST BRAND AWARDS 2024)”中&#xff0c;连续6年获得了由中国消费者评选的实验室护肤品牌部门大奖。 今年迎来第22届的“韩国第一品牌大奖(KOREA FIRST BRAND AWARDS)”是韩国规…

企业面临的典型网络安全风险及其防范策略

网络安全威胁是一种技术风险&#xff0c;会削弱企业网络的防御能力&#xff0c;危及专有数据、关键应用程序和整个IT基础设施。由于企业面临着广泛的威胁&#xff0c;因此通过监控和缓解最关键的威胁和漏洞。网络安全问题有七大类&#xff0c;包括多种威胁&#xff0c;以及团队…

【水文】简易时钟

/* 制作的一个能显示时间的简易时钟 */ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> // 带颜色的打印函数 void print_with_color(char *str, int color) { HANDLE hConsole GetStdHandle(STD_OUTPUT_HAND…

【Go面试向】defer与time.sleep初探

【Go面试向】defer与time.sleep初探 大家好 我是寸铁&#x1f44a; 总结了一篇defer传参与time.sleep初探的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 请大家看下面这段代码&#xff0c;看运行结果会出现什么&#xff0c;为什么&#xff1f; 问题 demo package mainim…

RubbleDB: CPU-Efficient Replication with NVMe-oF——论文泛读

ATC 2023 Paper 论文阅读笔记整理 问题 由于需要执行昂贵的后台压缩操作&#xff0c;CPU 往往是持久键值存储的性能瓶颈。在日志结构合并树&#xff08;LSM树&#xff09;&#xff0c;标准的基于磁盘的键值存储设计[2,4,8,22,41]&#xff0c;压缩可以在生产工作负载中消耗高达…

knife4j调用接口报404

问题 Knife4j文档请求异常&#xff0c;请求资源的接口都是404 解决方法 就是请求路径出错了&#xff0c;我一开始还以为是拦截器拦截了来自knife4j发来的请求。。。