Where are the implementations of the SdFat BlockDriver methods?
The typedef in BlockDriver.h is only for pointer type, not for instance of the object. The object is always of type SdSpiCard, but in one case it is not an implementation of BlockDriverBase, so the function parameters can't refer it by base type.

#if ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS
class SdSpiCard : public BaseBlockDriver {
#else  // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS
class SdSpiCard {


use of BlockDriver typedef

class FatFileSystem : public  FatVolume {
 public:
  bool begin(BlockDriver* blockDev, uint8_t part = 0) {


I was curious why the version without BaseBlockDriver. I asked the author Bill Greiman and he answered: 


  This is due to history. Long ago using a virtual base class cost lots
  of RAM and flash so I did this mainly for 328 boards