初尝类型萃取--typename、模板偏特化、和traits之(二)模板偏特化

news/2024/10/16 22:24:01 标签: C++

目录

第一种偏特化

第二种偏特化


这里只讨论类的偏特化

第一种偏特化

template <class A, class B>
class foo
{
    A a;
    B b;
};

template <class A, int>
class foo<A, int>
{
    A a;
    int b;
}

第二种偏特化

模板参数从值推广到指针、引用:

注意,偏特化前面一定要有非特化的模板,否则编译失败

#include <iostream>
#include<type_traits>

template <class A>
class bar
{
public:
    A a;
};
 
template <class A>//注意,如果没有前面的第一个模板,仅仅第二个模板是无法编译通过的
class bar<A *>
{
public:
    A a;
};
 
template <class A>//注意,如果没有前面的第一个模板,仅仅第3个模板是无法编译通过的
class bar<A &>
{
public:
    A a;
};
 
int main(void)
{
    bar<int> p;//第一个模板
    bar<int *> q;//第二个模板
 
  std::cout<<"p.a is:"<<std::is_same<int, decltype(p.a)>::value<<std::endl;
   std::cout<<"q.a is:"<<std::is_same<int ,decltype(q.a)>::value<<std::endl;
  return 0;
    
}

结果:


http://www.niftyadmin.cn/n/5708629.html

相关文章

Tomcat日志文件详解及catalina.out日志清理方法

目录 前言1. Tomcat日志文件详解1.1 catalina.out1.2 localhost_access_log1.3 catalina.<date>.log1.4 host-manager.<date>.log 和 manager.<date>.log1.5 localhost.<date>.log 2. catalina.out文件管理与清理方法2.1 为什么不能直接删除catalina.o…

spring:springboot3使用Spring Security,以及和springboot2的区别

文章目录 springboot3使用Spring Security介绍认证与授权简单示例核心APIUserDetailsService接口PasswordEncoder接口 Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别1. Jakarta EE 迁移影响&#xff1a;解决方案&#xff1a; 2. Spring Security 配置方式的变…

kubekey的应用

随着 Kubernetes 社区的不断发展&#xff0c;即将迎来 Kubernetes 1.30 版本的迭代。在早先的 1.24 版本中&#xff0c;社区作出一个重要决策&#xff1a;不再默认集成 Docker 作为容器运行时&#xff0c;即取消了对 Docker 的默认支持。这就像咱们家厨房换了个新灶头&#xff…

WPF中的内容控件

控件分类 在第一篇文章.Net Core和WPF介绍中的WPF的功能和特性部分根据功能性介绍了WPF的控件 名称。 在接下来的文章中&#xff0c;将会详细的介绍各个控件的概念及使用。 主要包括&#xff1a; 内容控件&#xff1a;Label、Button、CheckBox、ToggleButton、RadioButton、…

C++ include头文件的顺序以及双引号““和尖括号<>的区别

本文章进一步详细解释 #include 的头文件包含机制&#xff0c;包括搜索路径的处理、双引号 "" 和尖括号 <> 在不同环境中的使用差异&#xff0c;以及它们的底层机制。 1. 头文件包含机制和搜索路径详解 #include 是一个预处理指令&#xff0c;用于在编译前将…

gitlab配置ssh密钥

1.配置用户信息 git config --global user.name "你的名字" git config --global user.email "你的邮箱" 查看配置是否成功 git config --global --list 2.生成密钥 终端 或 右键文件夹open git bash here 输入命令 ssh-keygen -t rsa -C 随意(生…

查询使用方法:

查询&#xff1a; 什么是查询&#xff1a; 查询是产生一个虚拟表 看到的是表形式显示的结果&#xff0c;但结果并不真正存储 每次执行查询只是从数据表中提取数据&#xff0c;并按照表的形式显示出来。 查询机制简介&#xff1a; 查询语法&#xff1a; SELECT(列名)&#x…

浙大数据结构:11-散列4 Hashing - Hard Version

这道题主要在于思路&#xff0c;感觉像个模拟题&#xff0c;用到了线性探测的算法 机翻 1、条件准备 visit数组看这个位置有没有放进来数&#xff0c;num存非负整数&#xff0c;s存未到放入时机的数。 answer存答案。n为总共数量。 #include <iostream> #include<…