Вам нужно добавить определение, но вы можете просто перейти к базовому классу:
void diplomat::move(piece victim,
size_t newr,
size_t newc,
bool(mover::* life_status)(piece)/*= mover::life_status*/)
{
mover::move(victim, newr, newc, life_status);
}
Обратите внимание, что по умолчанию опасно использовать значение, отличное от базового, поскольку значение по умолчанию зависит от static_type, а не Тип Dynami c, который может сбивать с толку:
diplomat d;
mover& m = d;
d.move(victim, newr, newc); // OK, default argument mover::life_status
m.move(victim, newr, newc); // ERROR, mover doesn't have default argument