Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wpływ metod szablonowych na zgodność binarną bibliotek

Ostatnio zmodyfikowano 2013-07-08 17:41
Autor Wiadomość
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.:
C/C++
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?
P-87254
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.
P-87266
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ę:
C/C++
class ABC
    : public std::vector < int >
{
};
to wówczas typ jest określony i da się z tego zrobić bibliotekę. Jeżeli zrobisz:
C/C++
template < class T >
class ABC
    : public std::vector < T >
{
};
to typ jest nieznany, zatem nie da się wygenerować z tego biblioteki.
P-87267
Elaine
» 2013-07-08 17:41:06
1. co to jest ABI?
Application binary interface.
P-87268
« 1 »
  Strona 1 z 1