当前位置: 首页 > news >正文

模版之AnyType


title: 模版之AnyType
date: 2023-02-19 21:49:53
permalink: /pages/54a0bf/
categories:

  • 通用领域
  • 编程语言
  • C++
    tags:
  • C++
  • 元编程
    author:
    name: zhengzhibing
    link: https://azmddy.top/pages/54a0bf/

模版之AnyType

在研究C++的编译期反射时,发现了AnyType很有意思。

首先可以看一下这个类AnyType

struct AnyType {template<typename T>operator T();
};

初看,一个名叫AnyType的类声明了一个模版函数operator T()

如果进行实例化,就会可能是operator int()

operator int()可能大部分人都没见过,这是C++都一个特性 —— 用户定义转换函数,即允许从类类型到其他类型的隐式转换或显式转换。

如果是类类型之间的转换,operator T()可能不是一个好的选择。原因如下:

  1. 它和用户定义**(转换)构造函数没太大区别**。
  2. 没办法直接返回转换失败。
  3. 因为返回的是对象,不适用多次转换,例如:C=A+B。
  4. 性能考虑,转换涉及临时对象的拷贝,当然,编译器会出手(真的会出手?手动狗头)。

世上没有万金油,找到合适的场景就可以灵活运用!

  • 转换成void*/intptr_t,避免写reinterpret_cast
  • 转换成哈希值。
http://www.lryc.cn/news/13050.html

相关文章:

  • 【汇编】一、环境搭建(一只 Assember 的成长史)
  • 【博客628】k8s pod访问集群外域名原理以及主机开启了systemd-resolved的不同情况
  • 测试3.测试方法的分类
  • Android 基础知识4-2.9 FrameLayout(帧布局)详解
  • Go语言xorm框架
  • 19_微信小程序之优雅实现侧滑菜单
  • JSP中JDBC与javaBean学习笔记
  • 编译Android系统源码推荐的电脑配置
  • 加油站会员管理小程序实战开发教程10
  • shell编程之条件判断和流程控制
  • 第一次接触jquery
  • Vue中 引入使用 babel-polyfill 兼容低版本浏览器
  • ArcGIS Enterprise on Kubernetes 11.0安装示例
  • js 防抖函数 节流函数
  • Yarn节点unhealthy解决办法
  • 【jumpServer 功能梳理】
  • 中国各省人力资本测算就业人员受教育程度构成(2000-2021年)
  • java面试题-集合篇
  • Python 异步: 同时运行多个协程(10)
  • SVN 获取多版本间的更新内容
  • c++ const使用说明
  • VSTO 开发 EXCEL 委托与多线程的极简示例
  • spring之使用Spring的AOP
  • LeetCode LCP 66. 最小展台数量
  • 设计模式之模板方法模式
  • Python数据挖掘基础
  • Go基础-函数
  • AC的改进算法——TRPO、PPO
  • 【C++学习】list的使用及模拟实现
  • 动态规划专题精讲1