I understand why this would happen with built in types, but is there no fix for this?
Here I do not understand what you mean by "fix"?
As it is now, if you need new elements added to Vector<int> to be initialized to some specific value, e.g. zero, you can specify it as second parameter of .At.
Now by fix you can also mean that int() 'constructor' should be used and initialize value to zero, like std::vector does. Here I am not so sure this is such a good thing; but I am open to debate...