c++ - 是明确的专业模板吗?
问题描述
根据[temp.spec] p4,特化是实例化或显式特化的类/函数/[...]。[temp.expl.spec] p19指出一些显式特化是模板,这使我相信显式特化是特化(在“从模板生成的实体”意义上),而不是模板(有时)。
我的问题是,明确的专业化是实际的具体实体(类/函数/[...]),还是它们是模板。如果不是,它们到底是什么,它们不是模板或特化(遵循 [temp.spec] p4 提供的定义)
解决方案
您的问题假定不需要存在的二进制状态,即明确的专业化是模板或“具体实体”。
显式特化可能是也可能不是模板。非模板显式特化是一种特化。正如您引用的文字所述:
特化是实例化或显式特化的类、变量、函数或类成员。
因此,显式特化的行为类似于特化。模板实例化(隐式或显式)创建特化,除非参数匹配显式特化。所以相反,这就是被使用的东西。但无论是通过实例化还是通过显式特化生成,特化都被视为特化。
因此,例如,处理同一函数模板的不同显式特化,不是通过重载解析规则,而是通过模板参数推导。这与该模板的任何其他专业化情况没有什么不同。
推荐阅读
- python - MultiValueDictKeyError at / 'start_date'
- java - 用于 TypeReference 的 Mockito 匹配器
- python - 如何在 python 中使用 selenium webdriver 滚动 div
- mobile - 获取现有 StreamBuilder() 的已构建子项
- maven - 这个时间戳文件是如何从 maven build 生成的?
- node.js - 猫鼬多对多关系
- javascript - 显示从输入文件中选择的图像
- laravel-5 - 在功能测试中如何使用工厂数据?
- vb.net - VB.NET Datagrid / Datatable 列十进制格式
- python - 确定 Jupyter 导入声明中缺少哪个 DLL