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 fully specialized template class reference as an argument?
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 fully 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 toexport
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 astd::basic_string<T>&
, but you can of coursedllexport
a function taking astd::string&
.See also http://msdn.microsoft.com/en-us/library/twa2aw10(VS.80).aspx