#include struct Pin { virtual void set(bool logic); virtual void toggle(); virtual bool get(void); }; // https://www.modernescpp.com/index.php/c-is-still-lazy // curiously recurring template pattern template struct PinCRTP : public Pin { virtual override set(bool logic) { static_cast<> } }; int main(void) { return 0; }