C++标准ISO-IEC-14882-2003:第14章:模板

C++的最后一道坎|百万年薪的程序员 | 导语 C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一,C++发明人Bjarne Stroustrup 一开始没想到 C++ 会获得如此大的成功,他说:“C... 阅读详情

14. 模板

1.       模板定义了一族函数或类。

模板声明 :

export opt   template < 模板参数列表 > 声明

模板参数列表 :

模板参数

模板参数列表 , 模板参数

模板声明 中的声明 部分应该:

1)      声明或定义一个函数或类,或者

2)      定义一个类模板或类模板的嵌套类的成员函数、成员类或静态数据成员,或者

3)      定义一个类的成员模板或类模板。

模板声明 是个声明。如果其声明 部分定义了一个函数、类或静态数据成员的话,模板声明 就是个定义。

2.       模板声明 只能作为名字空间域或类域的声明出现。在函数模板声明中, declarator-id 必须是模板名字(就是说,不能是模板 id )。【注:在类模板声明中,如果类名是模板 id ,那么该声明就是一个类模板的偏特化。】

3.       在模板声明 、显式特化、显式实例化中,声明中的初始声明符列表最多只能出现一个声明符。当这样的声明用来声明类模板的时候是不允许出现声明符的。

4.       模板名有链接性。非成员的函数模板可以有内部链接;其他任何模板名都必须是外部链接。具有内部链接性的模板生成的实体与在其他翻译单元中生成的所有实体都不等同。模板、模板显式实例化或类模板偏特化不能有 C 链接性;如果上述这些东西的链接既不是 C 也不是 C++ 的,那它的行为就是随具体编译器实现而定的。模板定义必须遵守一定义原则。【注:函数模板和类模板成员函数的默认参数被认为是定义(由于模板会被实例化),也必须遵守一定义原则。】

5.       除了 14.5.4 中说明的情况,类模板的名字不能与任何其他同作用域的模板、类、函数、对象、枚举、枚举器、名字空间、数据类型的名字相同。除了函数模板可以被同名的(非模板)函数或其他同名的函数模板重载外,名字空间域或类域中的模板名必须唯一。

6.       对于名字空间域中的非内联函数模板、非内联成员函数模板、类模板的非内联成员函数、类模板的静态数据成员,这些东西的声明或定义之前可以加个关键字: export 。假如这种模板(带 export 关键字)的声明与定义在同一个翻译单元中,那么其定义就被认为是输出型的。模板的第一个包含 export 关键字的声明之后不必非得跟着其定义。

7.       声明一个输出型的类模板等价于将定义在本翻译单元中的其所有非内联成员函数、静态成员、成员类、成员类模板、非内联成员函数模板都声明为输出型的。

8.       定义在匿名名字空间中的模板不能是输出型的。一个程序中,模板只能被输出一次;如果程序代码与该规则冲突,不需要编译器给出诊断信息。非输出型的模板必须在其每个隐式实例化的翻译单元中定义,除非相应的特化在某个翻译单元中被显式实例化了;不需要编译器给出诊断信息。【注:参见 14.7.2 】输出型的模板在其实例化的翻译单元中,只需要有个声明就行了,不必定义。声明为输出类型的内联函数模板仅仅是内联的,不是输出型的。

【按:模板级的export 相当于函数级的extern ;内联的作用力比export 更强。】

9.       【注:编译器的具体实现可能会要求:一个包含输出型模板的翻译单元必须先编译,然后其他翻译单元才能将该模板实例化。】

 

 

SAP CBC 集成质量系统初始化接入实战指南 摘要 本文探讨了SAP S/4HANA Cloud Public Edition项目中质量系统的初始接入过程。质量系统并非开箱即用,而是需要经过SAP Central Business Configuration(CBC)的Scope and Organizational Structure阶段部署后才能具备完整功能。文章重点分析了几个关键环节:CBC里程碑确认的时机选择、Identity Authentication的初始管理员设置、Business Role Template的创建规范等。实施过程中需特 阅读详情

相关推荐

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络覆盖广,对物理攻击和自然灾害有一定的抵抗性。本文根据3GPP协议对NTN网络的背景、应用场景和信道模型进行了整理。

JCMLSY的博客 4928

C++标准ISO-IEC-14882-2003:第14章:模板-第3节:模板实参

 14.3 模板实参 1.      对应模板形参的三种形式,模板实参也有三种形式:类型、非类型和模板。模板 id 中指定的每个模板实参的类型和形式应该与其声明时模板形参列表中相应的形参的类型和形式相匹配。【例:template class Array { T* v; int sz; public:

declspec的专栏 1191

在 Zemax 非序列模式下建立干涉仪模型

Zemax 利用其相干检测功能,将到达探测器的射线的能量相干地组合起来,同时考虑每条检测到的射线的幅度和相位。从对这些干涉条纹的定量评估来看,光学干涉仪具有广泛的应用,包括在天文学中用于测量天体的大小,在计量学中用于精确测量距离,在显微镜中用于提高分辨率,以及在物理和工程的各个领域中用于检测条件的微小变化。在光学干涉仪中,使用的是光波。非相干和相干相加的总功率是守恒的,但相干光束的峰值辐照度应该是非相干光束总和的 2 倍,这是理所当然的。请注意,条纹的缺失是显而易见的,因为不再从相干的角度观察探测器。

jkh920184196的博客 2381

C++标准ISO-IEC-14882-2003:第14章:模板-第1节:模板的参数

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

declspec的专栏 952

PowerBI参数化实战:3分钟搞定动态数据源切换(附常见错误排查)

本文详细介绍了PowerBI参数化实战技巧,教你3分钟实现动态数据源切换。通过创建参数、改造查询和测试切换三步,轻松应对多环境部署与团队协作中的路径问题,并附上常见错误排查指南,有效提升报表的可维护性和工作效率。

p1q2r的博客 585

【YOLO】YOLOV5-Seg的Segment模块解析

Segment模块同时输出检测结果和分割掩模,通过轻量级分割头实现实时实例分割

浩瀚之水的专栏 599

C++标准ISO-IEC-14882-2003:第14章:模板-第4节:类型等价

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty

declspec的专栏 985

从 Non-Unicode 到 Unicode:ABAP 程序切换的坑、原理与工程化落地指南

摘要 老SAP系统中ABAP程序员常假设1字符=1字节,导致大量代码依赖单字节处理逻辑。Unicode系统的引入彻底改变了字符长度、偏移量等底层认知,强制要求程序遵循Unicode规则。关键问题包括:字符/字节语义混淆、结构体访问风险、以及ABAP语言版本的门槛限制。迁移时需要重点关注字符串处理、二进制协议解析等场景,利用UCCHECK、RSUNISCAN_FINAL等工具扫描风险,并通过持续集成机制确保代码质量。建议在Non-Unicode阶段就启用unicode_check参数模拟严格模式,分批次修复问

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3457

C++标准ISO-IEC-14882-2003:第14章:模板-第2节:模板特化的名字

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty

declspec的专栏 631

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。

TxNet 1751

AUTOSAR-WdgM篇

Wdg通常有两种:一种是芯片内部自带的片内看门狗,另一种是在芯片外部通过SPI这种接口连接的片外看门狗。MCAL只负责常用的有MCU内部看门狗,片内看门狗的特点是Wdg模块是直接访问相关硬件寄存器。内部看门狗依赖于系统时钟片外看门狗属于设备抽象层负责,通常需要使用MCAL提供的其他模块(比如SPI,DIO,PWM等)来访问/控制外扩看门狗芯片。这种不能直接访问硬件寄存器。Wdg Driver:有三种模式slow mode,fast mode ,off mode。

qq_329563867的博客 5830

C++标准ISO-IEC-14882-2003:第9章:类 -第1节:类名

 9 类1.        类是一种类型。在它的作用域内,该类型的名字称为类名。类名:       标识符       模板idClass-specifiers和elaborated-type-specifiers用来描述类名。类的对象是由一系列(可能为空)的成员和基类对象。clas

declspec的专栏 936

Android Activity面试题最全解析(5万字长文)

Intent是Android中用于启动活动、服务或广播的一种消息对象。它包含了一系列键值对数据,用于描述操作的目的以及需要传递的信息。IntentString:字符串intfloatlong:基本数据类型Parcelable:实现了Parcelable接口的对象:实现了接口的对象示例代码如下:Java深色版本1// 创建Intent并传递数据");67// 启动新的Activity是一个XML标签,用于定义ActivityService或可以响应的Intent类型。它包含了。

大模型大数据攻城狮的专栏 803

C,C++ 的发展和标准化进程

C语言 https://baike.baidu.com/item/c语言 1.K&R C 起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。这本书被

icycolawater的专栏 1037

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++标准ISO-IEC-14882-2003:第9章:类-第2节:类的成员

 9.2 类的成员类描述:成员声明 类描述opt访问描述符 : 类描述opt成员声明:声明描述符序列opt 成员声明器列表opt ;函数定义 ;opt::opt嵌套名字声明

declspec的专栏 762

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

2021年最新整理, C++ 学习资料,含C++ 11 / 14 / 17 / 20 / 23 新特性、入门教程、推荐书籍、优质文章、学习笔记、教学视频等

???????????? 【重磅推荐收藏:C++ 参考手册】 - 11~20你想要查的,他都有 ???? C++ 发展历程 C++ 编程语言的历史可以追溯到 1979 年,当时 Bjarne Stroustrup 为博士学位论文进行了一些开发。在 Stroustrup 可以使用的所有语言中,有一种被称为 Simula 的语言,顾名思义,它可能是一种主要为仿真而设计的语言。Simula 67 语言是 Stroustrup 使用的变体,被认为是支持面向对象编程范例的主要语言。Stroustrup 发现这种范

a410974689的博客 1911

C++标准ISO-IEC-14882-2003:第9章:类-第3节:成员函数

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty

declspec的专栏 733

C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第8节:拷贝对象

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

declspec的专栏 798

C/C++ 开发库 | C/C++ Development Library

C/C++ 开发库 | C/C++ Development Library 这里收集一些著名的 C/C++ 开发库、SDK、类库、可复用类与结构代码 等信息,列举它们的介绍、参考和网站链接,为各位 C/C++ 程序员和爱好者提供检索和查阅类库的方便。 下面收集的 C/C++ 类库介绍整理来源于文章:C++ 资源之不完全导引(作者:曾毅、陶文),这篇文章曾发表于 2004 年 5 月《CSD

killer9806的专栏 940

C++初识及概述

c++ ”中的++来自于c语言中的递增运算符++,该运算符将变量加1。c++起初也叫 ” c with clsss ”.通过名称表明,c++是对C的扩展,因此c++是c语言的超集,这意味着任何有效的c程序都是有效的c++程序。c++程序可以使用已有的c程序库。是编程模块的集合,可以在程序中调用它们。库对很多常见的编程问题提供了可靠的解决方法,因此可以节省程序员大量的时间和工作量。c++语言在c语言的基础上添加了和的支持。c++继承了c语言高效,简洁,快速和可移植的传统。

实力派,无需多言! 1121

C++第一章:C++语言概述

一、计算机系统组成 二、计算机基本结构 三、指令、程序和软件 (一)指令 指令是计算机执行某种操作的机械命令,它可以被计算机硬件直接识别和执行。计算机指令用二进制代码表示,一条指令通常由两个部分组成: (二)程序 计算机程序是指完成一定功能的指令的有序集合。 (三)软件 软件是指程序、程序运行所需要的数据以及开发、使用、维护这些程序所需要的文档的集合...

qq_66136291的博客 1756

C++三部曲|C++编程核心思想

| 导语 C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一,C++发明人Bjarne Stroustrup 一开始没想到 C++ 会获得如此大的成功,他说:“C++ 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标,就是高效硬件使用,再加上强大的抽象机制,以及它根据来自实际使用情况的反馈进行谨慎的发展”。C++编程语言走到今天已经有将近40年的历史了,但它依然是...

极客重生 1414

C++三部曲|C++核心思想

| 导语 C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一,C++发明人Bjarne Stroustrup 一开始没想到 C++ 会获得如此大的成功,他说:“C++ 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标,就是有效的使用硬件,再加上强大的抽象机制,以及它根据来自实际使用情况的反馈进行谨慎的发展”。目录C++历史背景C++历史背景C ++编程语言的历史可...

极客重生 1119

C++编程核心思想

| 导语 C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一,C++发明人Bjarne Stroustrup 一开始没想到 C++ 会获得如此大的成功,他说:“C++ 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标,就是高效硬件使用,再加上强大的抽象机制,以及它根据来自实际使用情况的反馈进行谨慎的发展”。C++编程语言走到今天已经有将近40年的历史了,但它依然是...

极客重生 1498

C++历史背景

C ++编程语言的历史可以追溯到1979年,当时Bjarne Stroustrup为博士学位论文进行了一些开发。在Stroustrup可以使用的所有单词中,有一种被称为Simula的语言,顾名思义,它可能是一种主要为仿真而设计的语言。Simula 67语言是Stroustrup使用的变体,被认为是支持面向对象编程范例的主要语言。Stroustrup发现这种范例对包装开发很有帮助。但是,Simula语言对于实践和实际使用而言太慢了;

爱编程的鱼的博客 1125

还在苦恼C++纷繁复杂的语法知识?一文带你读懂70%C++基础知识!

所以也可以理解为c++的出现并不是去替代c,而是对c的扩展,所以在c++中既可以使用c++新特性,并且可以使用c的过程式思维来编写程序。c++起初也叫”c with clsss”.通过名称表明,c++是对C的扩展,因此c++是c语言的超集,这意味着任何有效的c程序都是有效的c++程序。由于C使用不同的扩展名来表示不同文件类型,因此用一些特殊的扩展名(如hpp或hxx)表示c++的头文件也是可以的,ANSI/IOS标准委员会也认为是可以的,但是关键问题是用哪个比较好,最后一致同意不适用任何扩展名。

m0_63204338的博客 832

C++学习

第一层次:C++基础。 C++Primer、C++大学教程、C++程序设计语言。另外,可参考:C++标准程序库、The C++ Standatd Library Extensions。 第二层次: (More)Effective C++、(More)Exceptonal C++、Effective STL、C++编程规范 第三层次: 深入探索C++对象模型、Imperfect C++、C

liuyinghui523的专栏 844
上一篇: 原来这个游戏是为了纪念特斯拉
下一篇: C++标准ISO-IEC-14882-2003:第14章:模板-第1节:模板的参数
declspec
博客等级 码龄21年 3粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值