Umieszczanie w bibliotece konkretyzacji szablonu

0

Czy wie ktoś może jak umieścić w bibliotece nieużywaną przez bibliotekę konkretyzację szablonu funkcji?

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ż)

1 użytkowników online, w tym zalogowanych: 0, gości: 1