Wpływ metod szablonowych na zgodność binarną bibliotek
Ostatnio zmodyfikowano 2013-07-08 17:41
b00rt00s Temat założony przez niniejszego użytkownika |
Wpływ metod szablonowych na zgodność binarną bibliotek » 2013-07-08 16:24:05 Załóżmy, że mam zwykłą (nie szablonową) klasę, która znajduje się w jakiejś bibliotece, np.: class A { public: void jakas_zwykla_medoda(); template < class T > void jakas_metoda_szablonowa(); }
Zastanawiam się jak wygląda kwestia wpływu metody szablonowej na zgodność ABI pomiędzy wersjami biblioteki? Czy w ogóle jest jakiś wpływ metod szablonowych na ABI klas nieszablonowych? |
|
pekfos |
» 2013-07-08 17:29:54 Szablonów nie ma w ABI (chyba, że użyto explicit instantiation). Nie można wygenerować kodu dla nieznanego typu. |
|
DejaVu |
» 2013-07-08 17:33:10 1. co to jest ABI?
2. Szablonów się nie da skompilować jako bibliotekę. Z szablonów generowana jest konkretna implementacja i konkretna implementacja (np. std::vector<int>) dopiero trafia do biblioteki. Czyli jeżeli zrobiłbyś klasę:
class ABC : public std::vector < int > { };
to wówczas typ jest określony i da się z tego zrobić bibliotekę. Jeżeli zrobisz:
template < class T > class ABC : public std::vector < T > { };
to typ jest nieznany, zatem nie da się wygenerować z tego biblioteki. |
|
Elaine |
» 2013-07-08 17:41:06 |
|
« 1 » |