Ключевое слово export
предназначено для того, чтобы шаблоны были объявлены в заголовочных файлах, но определены в файлах реализации - как это обычно делается с любой другой функцией.
К сожалению, производители компиляторов более или менее игнорировали ключевое слово export
за последнее десятилетие. Сопровождающие GCC и Microsoft скажут вам, что для этой функции не хватает «спроса» (как это ни удивительно - почти никто не поддерживает ее, поэтому никто не знает об этом, как удачно доказывает ваш вопрос). Они также скажут вам, что это слишком сложно реализовать эффективно.
(Справочная информация: Это то, что люди EDG говорили на заседаниях комитета C ++, но другие настаивали на добавлении его в стандарт. В конце концов, люди EDG были первыми и, к сожалению, единственными, кто по сей день, кто насколько я знаю, реализовал эту функцию в своем интерфейсе компилятора.)
Таким образом, для всех практических целей вы можете игнорировать приведенное выше утверждение. Шаблоны должны быть определены в заголовочных файлах и вообще не могут быть «объявлены», поскольку все внешние интерфейсы компилятора, за исключением EDG, не соответствуют стандарту в этом отношении.