You can bind functions to structs and first parameter is special cased when it's a pointer-to or a const version of the structs... What more do you want really besides inheritance (which is considered dangerous by many). In the era of LLMs do you really want that sort of "hidden action" that you force the LLM to inefficently reason through?