Yes, but you also need to specify the type in C. ((void *)p)->foo only works in New B not in C.
> IMO these are a mistake
Forgetting to check bounds does always result in these problems in C, this is not specific to VLAs. I find them useful.
> Exceptions are problematic in their implementation
Ok, but that means to me having these in the language is only a downside.
Yes, but you also need to specify the type in C. ((void *)p)->foo only works in New B not in C.
> IMO these are a mistake
Forgetting to check bounds does always result in these problems in C, this is not specific to VLAs. I find them useful.
> Exceptions are problematic in their implementation
Ok, but that means to me having these in the language is only a downside.