#pragma once template struct VRefMut { const T *vtable; void *instance; }; // For the C++'s purpose, they are all the same template using VRef = VRefMut; template using VBox = VRefMut; template using Pin = T; /* template struct VBox { const T *vtable; void *instance; }; template struct VRef { const T *vtable; const void *instance; }; */ template struct VOffset { const T *vtable; uintptr_t offset; };