Angenommen, ich besitze eine Bibliothek, die eine Funktion deklariert, die const
type zurückgibt:
Nun möchte ich const
von makeFoo()
return type entfernen (Siehe meine vorherige Frage ). Ich kann const
sowohl aus der Kopfzeile als auch aus der cpp-Datei entfernen, die Bibliothek neu erstellen und meinen Code mit der neuen Bibliothek verknüpfen. Ich habe jedoch auch alten Code, der dynamisch mit dieser Bibliothek verknüpft ist, und ich möchte, dass er weiterhin mit der neuen Version der Bibliothek arbeitet.
Also, erste Frage, entfernt const
vom Rückgabetyp ABI?
Zweite Frage, der eigentliche Code ist ganz anders: Es ist eine Template-Klasse, die eine statische Member-Funktion hat und die später explizit instanziiert wird:
%Vor%Ändert es etwas?
Wenn das wichtig ist, verwende ich g ++ unter linux.
Die folgenden Richtlinien zu den Auswirkungen auf die ABI legen nahe, dass die Antwort ja lautet, ABI bricht sie jedoch Kompatibilität:
Sie können nicht
...
Für bestehende Funktionen jeglicher Art:
- Ändern der Rückgabetyp in irgendeiner Weise
Da Sie den Rückgabetyp von const Foo
auf Foo
ändern, würde ich sagen, dass dies faul ist.