タイトルはすべてです。私は、デフォルト値を持つクラスのメンバ関数に引数を追加します。議論は単純な型ではない。これはABIを壊しますか?私の新しいライブラリのバージョンがM.m.0
になり、M.m-1.x
を使用するすべてのリンクされたアプリケーションのドロップイン置換として利用できるはずです。関数にデフォルト値の引数を追加するとABIが壊れますか?
サンプルコード:
// These are some classes: base and child : public base
/* Version 1.2.3 */
class foo() {
public:
void do_that_stuff(const std::string a);
}
/* Version 1.3.0 */
class foo() {
public:
void do_that_stuff(const std::string a, const base& b = base());
}
PS:私は私自身のテストを行なったし、それが働いています。ちょうど確信できない
名前はすべてそれを言います。デフォルトの引数は* arguments *であり、関数型とは何も関係しません(特に、関数のパラメータで)。 –
_「これはABIを後ろに壊しているのですか?」_すみません? –
'do_that_stuff'は古いコンパイルと新しいコンパイルで異なる名前を持つことになるでしょう - 私はABIとの互換性の定義に違反していると思います。 –