Удаляет ли значение параметра функции по умолчанию сохранение бинарной совместимости?

Я сейчас отлаживаю код, но нужно сохранить бинарную совместимость. Теперь есть модификация значения по умолчанию для параметра функции.

void functionName(const type parameter = class::A::getValue());

Теперь я хочу просто изменить это так:

void functionName(const type parameter);

Это все еще бинарная совместимость?

0

Решение

Параметры по умолчанию не меняют тип функции. gcc 4.9.1 компилирует этот код без предупреждений:

#include <iostream>
using namespace std;

static void f (int x) {
cout << x << endl ;
}
static void g() ;

int main() {
f (99) ;
g() ;
return 0 ;
}

static void f (int x = 101) ;

static void g() {
f() ;
}

Re-декларирование f здесь разрешено принимать значение параметра по умолчанию, что означает, что его связь не изменяется. Так что ты будешь в порядке.

0

Другие решения