C ++ 98 ввел ключевое слово export
, которое позволило вам иметь определение шаблона функции в другой единице перевода , только с его объявлением необходимо скомпилировать код, который его использует. (См. здесь , если вы сомневаетесь в том, что такое определение или объявление. В принципе, вы можете иметь шаблоны функций реализация в другом модуле перевода.) Это так же, как и в других функции.
Однако, только компиляторы, использующие интерфейс EDG, когда-либо поддерживали его, и не все из них даже официально. Фактически, единственный известный мне компилятор, который официально поддерживал его, был Comeau C ++ . Вот почему ключевое слово, к сожалению, было удалено из C ++ 11.
Я думаю, можно с уверенностью сказать, что ожидается, что надлежащая модульная система излечит C ++ от многих ее недостатков, которые окружают всю модель компиляции, но, опять-таки, к сожалению, модульная система не рассматривалась как нечто, с чем можно было бы справиться разумное количество времени для C ++ 11. Надо будет надеяться на следующую версию стандарта.