C++ Visual Studio静态库和可变模板类

C++ Visual Studio静态库和可变模板类,c++,templates,c++11,static,variadic,C++,Templates,C++11,Static,Variadic,我刚刚体验到,在VisualStudio中编译静态库时,可变类似乎工作得不太好 我有这样的事情: template <typename ...T> class A {...}; class B : public A<std::string> {...}; 模板 A类{…}; B类:公共A{…}; 链接器不会把所有的东西都放在一起,当我测试我的静态库时,我得到了我在B中使用的来自A的方法的未解决的外部符号错误。当我删除可变模板并自己专门化类(提供同一类的不同实现)时,

我刚刚体验到,在VisualStudio中编译静态库时,可变类似乎工作得不太好

我有这样的事情:

template <typename ...T>
class A {...};

class B : public A<std::string> {...};
模板
A类{…};
B类:公共A{…};
链接器不会把所有的东西都放在一起,当我测试我的静态库时,我得到了我在B中使用的来自A的方法的未解决的外部符号错误。当我删除可变模板并自己专门化类(提供同一类的不同实现)时,一切正常


我是做错了什么,还是visual studio在这里遇到了问题?

模板的定义必须在实例化它的翻译单元中可见(通常指头文件中的代码),或者必须为所需的类型显式实例化它。这就是C++模板的工作原理。您的定义在头文件中吗?我有一个带有类定义的头文件和一个带有方法实现的cpp。如前所述,实现必须在实例化模板的TU中可见。这意味着您的实现需要移动到头部,或者您需要显式地实例化您将要使用的每个可能的实例化。yep的可能副本似乎就是这样,您是一个机器人还是如何发现的?