提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
相信很多人在使用C++模板特例化都遇到过这个错误,很多人不知道原因甚至一头雾水,接下来我就用这篇文章解释下出现这个错误的原因。
一、C++模板是什么?
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。
二、错误原因
缺少主模板声明。
1.主模板
当同时拥有一个模板的通用定义及其针对特定模板实参集合定义的特例化实现版本时,我们称最通用的模板定义为主模板(primary template)。主模板用来确定某个模板的使用是否合法,并参与重载解析。只有主模板被匹配后,才会考虑特例化版本。
2.解决方法
先声明主模板,再声明特例化模板,举个例子: