The abstraction (necessarily) exports cSerial::begin(unsigned long baudrate, uint16_t config). But STM32 UsbSerial doesn't have a two-parameter begin(). This results in a compile error when trying to create a cSerial<UsbSerial>.
Need to use template metaprogramming to detect the lack of a method and use UsbSerial::begin(baudrate) instead.