So I’ll start with this. In your example you used Auto ScreenPosition but, we already know why the type is so why are we having the compiler look it up again?
FVector2D ScreenPosition = FVector2D(
ViewportSizeX * CrossHairXLocation,
ViewportSizeY * CrossHairYlocation
);
Another example in TankAiController
auto PlayerTank = GetWorld()->GetFirstPlayerController()->GetPawn();
We should know that getPawn is a type of APawn, or even AActor as pawn extends actor.
So long question short. Why use auto if we know the class type being return?