Windows上的模板有什么问题?解决方案是什么

What are the problems with templates on Windows? What are the solutions?

本文关键字:问题 解决方案 是什么 什么 Windows      更新时间:2023-10-16

我在Linux上,并尝试编写跨平台代码。我知道模板很难在Windows上正确使用,但我不记得这些细节。

我确实知道一个问题与跨越dll边界的模板调试和模板有关,但如何解决该模板 - 或者甚至可以解决问题。

我相信还有其他问题,但是我只发现了对它们的模糊引用。

so:Windows上的C 模板有什么问题?除了不使用模板,其他解决方案是什么?


编辑:也许问题仅在于STL,而不是使用模板?

两个引号:

您无法在没有明显头痛的情况下在窗口上跨库边界上的STL呼叫。

封装是必须的,我完成了一些在dll边界上使用STL容器以及Windows上的静态库进行的项目,而无需封装就无法使用。

我知道模板很难在Windows上正确使用。

我从未听过这样的事情。听起来像是毫无根据的,我建议您完全忽略。

这是一个问题,来自MS KB( edit:这个仅与MSVC 5和6有关;我没有意图支持这种古老的编译器,所以这与我无关):

一些STL类包含嵌套类。这些课程无法导出。例如,Deque包含一个嵌套的Deque :: Iterator。如果您导出Deque,您将获得警告,必须导出Deque :: Iterator。如果您导出Deque :: Iterator,则会警告您必须出口Deque。这是由设计的限制引起的,即一旦实例化了模板类,就无法重新实现和导出。目前唯一可以导出的STL容器是向量。其他容器(即,地图,设置,队列,列表,deque)都包含嵌套类,无法导出。