![]() |
1
22
错误
这明确声明特定的专门化在其他地方定义。许多编译器已经支持这一点,有些编译器使用
|
![]() |
2
9
你在头文件中添加了一个带参数的原型吗? 我是说文件里有什么
如果不是,那可能就是原因。 |
![]() |
3
3
我在gcc4上遇到了同样的问题,下面是我如何解决它的。这是一个更简单的解决方案,而不是我之前的评论让我相信的。前几篇文章的想法是正确的,但他们的语法对我来说不适用。
|
![]() |
4
2
根据规范,您的专用函数模板不应在外部调用
另一方面,一旦函数模板被实例化,编译器就可以看到一个不再是模板的函数。GCC可以跨不同的编译器单元重用这个定义,因为标准规定每个模板对于一组给定的类型参数只能实例化一次[温度规格]. 不过,由于模板没有导出,因此应该仅限于编译单元。 我相信GCC在跨编译单元共享实例化模板列表时可能会暴露一个bug。通常,这是一个合理的优化,但它应该考虑到函数的特殊化,而这似乎并不能正确地执行。 |
![]() |
5
1
两种情况都没有任何警告。我有点怀疑,这就是我做实验的原因。
|
|
6
1
正如安东尼·威廉姆斯所说
文件A.h:
文件A.C:
|
![]() |
7
0
我主要在这里寻求启示:-)因为第一个应用程序是一个单元测试,不幸的是有一个bug没有出现在测试中,而是出现在真实的应用程序中。。。 (注:我已经修复了这个特定的bug,实际上是通过在头中声明了专门化;但是还有哪些类似的bug可能仍然隐藏?) |
![]() |
8
0
你确定你没有困惑吗
|
![]() |
9
0
除非头文件中也列出了专用模板函数,否则其他应用程序将不知道专用版本。解决方案是添加
|