LINUX.ORG.RU

История изменений

Исправление Dendy, (текущая версия) :

Вы немного перепутали:

.cpp:

template class A<int>;
template class A<double>;
template class A<float>;

Да, так код для конкретных специализаций попадёт в объектник и к нему можно будет прилинковаться.

Далее, как уже сказали, вынести код из .cpp в заголовочник с шаблоном по понятным причинам, чтобы компилятор мог генерировать код для произвольных параметров шаблона.

И ещё далее, чтобы ускорить компиляцию «тяжёлых» заголовочников их можно прекомпилировать, man gcc -x c++header и gcc -include (-include-pch для clang).

Исходная версия Dendy, :

Вы немного перепутали:

.cpp:

template A<int>;
template A<double>;
template A<float>;

Да, так код для конкретных специализаций попадёт в объектник и к нему можно будет прилинковаться.

Далее, как уже сказали, вынести код из .cpp в заголовочник с шаблоном по понятным причинам, чтобы компилятор мог генерировать код для произвольных параметров шаблона.

И ещё далее, чтобы ускорить компиляцию «тяжёлых» заголовочников их можно прекомпилировать, man gcc -x c++header и gcc -include (-include-pch для clang).