我正在寻找GCC与MSVC不同的概述或描述,用于编译+链接具有特化的模板类.例如,这种类型的东西适用于GCC但不适用于MSVC:
// Base.h templatestruct Base { template QString makeTitle(const G* obj){obj->CompilerError();} }; // in Foo.cpp template <> template QString Base ::makeTitle(const G* obj) { return mystr(); } void SomeFunc() { std::cout<< Base ().makeTitle () ; }
并且解决方案往往是我必须在使用之前在Base.h中声明特化,或者在Windows上存在链接错误.MSVC如何/为什么隐式地实例化,以及GCC如何/为什么对某些cpp文件中声明的特化是健壮的?
相关问题,注意一般'使用前声明'要求: 模板专业化 - MSVC和GCC/MinGW之间的不同行为