成员模板特化的概念_隶属相同的类

2024-04-15 00:32

本文主要是介绍成员模板特化的概念_隶属相同的类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

成员模板特化
1。需是一个特化版本类的成员

template<class T1>
class A
{
public:
    template<class T2>
    static void fun();
    template<>
    static void fun<int>();
};

template<class T1> template<class T2>
void A<T1>::fun(){cout << "okokok" << endl;}

template<class T1> template<>
void A<T1>::fun<int>(){cout << "int_okokok" << endl;} //illegal use of explicit template arguments
                                                                                                    //an explicit specialization of a template
                                                                                                    //member must be a member of an explicit                                                                                                                     //specialization

int main()
{
    A<int>::fun<int>();
    A<int>::fun<bool>();
    return 0;
}


2。实现在类内时的可以

template<class T1>
class A
{
public:
    template<class T2>
    static void fun();
    template<>
    static void fun<int>();

    template<>
    static void fun<int>(){cout << "int_okokok" << endl;}
};

template<class T1> template<class T2>
void A<T1>::fun(){cout << "okokok" << endl;}

int main()
{
    A<int>::fun<int>();
    A<int>::fun<bool>();
    return 0;
}


综合上述可以见,
1。特化版本需在通用版本之后才能定义(函数模板,类模板)
2。模板成员的特化,需隶属相同的个类(实例化的时候)才行,写在类内能使得特化版本与通用版本同时属于A<T>,写在类的外则可能通用版本A<T1>的,特化版本A<T2>的,即使T1=T2,也是两个范围的值相同,而并非相同范围的概念的
3。C++ template 199页说明template<>不能跟在一个template parameter list之后,写在类内这样避免

devcpp给的错误提示:explicit specialization in non-namespace scope `class <unnamed>::A'
bcb6给的错误提示Cannot explicitly specialize a member of a generic template class
VS2005、intel9.1编译通过

如果A不是模板类,devcpp仍然编译出错,bcb6可以编译通过

这篇关于成员模板特化的概念_隶属相同的类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904439

相关文章

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

gitlab项目实现添加新成员

《gitlab项目实现添加新成员》:本文主要介绍gitlab项目实现添加新成员方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录gitlabhttp://www.chinasem.cn项目添加新成员1、进入项目2、手动输入要添加成员的账号或者搜索总结gitlab项

Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)

《Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)》在职场中,Word文档是公认的好伙伴,但你有没有被它折磨过?批量生成合同、制作报告以及发放证书/通知等等,这些重复、低效... 目录重复性文档制作,手动填充模板,效率低下还易错1.python-docx入门:Word文档的“瑞士

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2