The title says all. I'm going to add an argument to a member function of a class with a default value. The argument is of a non-trivial type. Does this break ABI? Let's say my new library version is going to be M.m.0
and it should be available as a drop-in replacement for all linked applications that use M.m-1.x
.
Sample code:
// 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: I did my own test, and it's working. Just can't be sure
do_that_stuff
will get a different mangled name in old and new compilations - I think that breaks my definition of ABI compatibility. – Testify