我需要导出模板专门化。
下列定义相等吗?
typedef std::vector<int> MY_API MyIntArray; // (1)
template class MY_API std::vector<int>; // (2)
typedef std::vector<int> MyIntArray;常见的MY_API宏定义看起来类似于#define MY_API __declspec(dllexport)。
另一个问题是
我已经看到了一堆关于跨模块/dll边界使用STL类的问题,以及潜在的问题。
发布于 2013-12-03 06:05:17
不-- typedef是一个稍微聪明的#define版本,它将指定的名称等同于指定的类型。它在编译器的符号表中添加一个条目,表示该名称代表该类型。
不过,typedef只会做更多的事情。它没有具体地实例化指定的类型,因此它不等同于对所述模板的显式实例化。(为什么它不显式地实例化类型:例如,因为您可以创建一个不完整类型的typedef,在类型完成之前不能实例化)。
https://stackoverflow.com/questions/20343958
复制相似问题