Полностью специализированные шаблоны и dllexport - PullRequest
2 голосов
/ 17 февраля 2010

Microsoft говорит: «Шаблоны нельзя использовать с функциями, объявленными с __declspec (dllimport) или __declspec (dllexport).» ( ссылка ).

Что это значит? Могу ли я экспортировать функцию, которая имеет полностью специализированную ссылку на класс шаблона в качестве аргумента?

Ответы [ 2 ]

3 голосов
/ 17 февраля 2010

Это не специфичная для dllexport / dllimport проблема, это общая проблема с шаблонами - только один компилятор в настоящее время реализует средства для export шаблонов, см. FAQ по шаблонам Comeaus для подробности.

Полностью специализированные шаблоны, однако, являются отдельными и конкретными типами и в основном могут использоваться с расширением __declspec, но есть ограничения , кроме записи, которую вы связали.

Лично я бы в основном избегал использования шаблонов в интерфейсе и использовал их только для внутреннего использования - я не понимаю, какие большие преимущества дает время, потраченное на обход ограничений.

1 голос
/ 17 февраля 2010

Это означает, что вы не можете dllexport шаблон функции , взяв std::basic_string<T>&, но вы, конечно, можете dllexport a функцию , взяв std::string&.

См. Также http://msdn.microsoft.com/en-us/library/twa2aw10(VS.80).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...