Most likely answer is reflection. UHT in particular needs those prefixes to parse things correctly, and no doubt there’s other engine machinery that requires this too. I’m sure it could be done an alternative way, but why change what isn’t broken.
There’s probably also an argument for not having two different coding standards live at the same time.
Cool. But according to Chat GPT, the F stands for “flexible.” I wonder which it is? Maybe both.
“In Unreal Engine, the “F” prefix in data types like FVector and FString often stands for “Flexible.” These “F” prefixed types are part of Unreal Engine’s coding conventions and are used to denote types that are designed to be flexible and versatile, offering additional functionality and features tailored for Unreal Engine development.”