Entfernt das Entfernen von const von einem Funktionsrückgabetyp ABI?

8

Angenommen, ich besitze eine Bibliothek, die eine Funktion deklariert, die const type zurückgibt:

%Vor%

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.

    
Petr 31.05.2016, 13:50
quelle

1 Antwort

1

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.

    
Smeeheey 31.05.2016 13:59
quelle

Tags und Links