Czy wie ktoś może jak umieścić w bibliotece nieużywaną przez bibliotekę konkretyzację szablonu funkcji?
0
1
W pliku źródłowym robisz:
template TypZwracany twojaFunkcja<Typ>(Typ prametry);
To jest jawna konkretyzacja szablonu (explicit template instantiation).
W plik nagłówkowym robisz:
extern template TypZwracany twojaFunkcja<Typ>(Typ prametry);
To powoduje, że w jednostce kompilacji, która taki plik nagłówkowy dołączy, nie zostanie wygenerowana konkretyzacja. Podczas linkowania zostanie wykorzystana ta z pliku źródłowego.
Extern templates zostały dodane w C++11, więc pewnie potrzebny będzie w miarę nowy kompilator. (Popularne kompilatory obsługiwały to od dawna jako rozszerzenia, na pewno GCC i MSVC, inne pewnie też)
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.