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 »  |