I think that it is confusing to add the fallible flag to virtual deleteAllTuples to complicate the abstract Table interface for nothing.
Instead, add a non-virtual function like deleteAllPersistentTuples(bool, bool) specifically on PersistentTable.
PersistentTable::deleteAllTuples can then call deleteAllPersistentTuples. Situations (like inside PersistentTable methods) when you KNOW
you have a PersistentTable, you can just call deleteAllPersistentTuples directly.