Why doesn't UE utilize STL containers?

Actually, at one point TArray had such a constructor and did the equivalent of AddUninitialized. It got removed because it was deemed unsafe to not explicitly mention ‘Uninitialized’ when doing an uninitialised resize. Also, it caused confusion about whether or not the constructor was resizing or reserving. This was also before AddDefaulted existed.

Familiarity and compatibility is one of the motivating factors behind a move to standard containers/algorithms. For some of the reasons already touched upon (like problems with the standard allocator model), it may be the case that we end up with our own ‘UESTL’ which, like EASTL, will be our implementation but which ‘quacks’ like the standard.

In any case, it’s unlikely to happen any time soon.

Steve