c++ - 没有定义的模板规范
问题描述
我有以下代码
template <typename Signature>
class Holder;
template <typename I, typename O>
struct Holder<O(I)> {
// code here
}
};
...
int main()
{
...
Holder<int(double)> a;
...
}
我知道一个参数模板参数的声明是必要的(因为我用一个函数对象参数调用模板类);但是如果在这种情况下我真的提供模板规范,我不明白。我认为模板的规范需要定义(不仅仅是声明)它,而在这种情况下,我只是声明了单参数模板,然后我将其定义为具有两个参数的模板。技术上发生了什么?
解决方案
不,这是一个有效的模板专业化(不是“规范”,这是一个错误的词)。
声明但未定义的主要(非专业)模板没有任何特殊效果。您将无法创建它的实例(就像未定义的非模板结构一样),但仅此而已。
推荐阅读
- python - 如何通过实时流输入到 pandas 数据框?
- spring - 在 Spring Boot Cloud Kubernetes 本地测试中调用 listNamespacedConfigMap(Async) 时缺少必需的参数“命名空间”
- javascript - 从对象数组中删除对象的问题
- sql - DB2 存储过程 IF/ELSE —— 我缺少什么?
- caching - 如何知道资源是否真正从 chrome devtools 的缓存中加载?
- python - 在命令提示符下为 Python 输出构建 Sublime
- python - 如何实现“软件中断”?
- git - git status 的 Git 别名列出了相对于存储库根目录的文件
- php - 如何将字符串添加到php函数内的数组中
- ruby-on-rails - Rails Action Mailer 在本地工作,但不能在生产环境中工作:Heroku:内部服务器错误