开发者

Fully specialised templates and dllexport

Microsoft says: “Templates cannot be used with functions declared with __declspec (dllimport) or __declspec (dllexport).” (link).

What does this mean? Can I export a function which has a ful开发者_JAVA百科ly specialized template class reference as an argument?


That isn't a dllexport/dllimport-specific problem, its a general issue with templates - only one compiler currently implements the means to export templates, see Comeaus template FAQ for details.

Fully specialized templates however are distinct and concrete types and basically usable with the __declspec extension, but there are limitations besides the entry you linked.

Personally i'd mainly avoid templates in the interface here and only use them internally - i don't see the what big benefits the time invested in working around the limitations give you.


It means that you can't dllexport a function template taking a std::basic_string<T>&, but you can of course dllexport a function taking a std::string&.

See also http://msdn.microsoft.com/en-us/library/twa2aw10(VS.80).aspx

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜