vector< MyObject<MyType> > ObjectList(100, MyObject<MyType>(param1));
MyObject internally creates a member called 'storage' which is an array of MyType using the on the heap.
But use the line of code above, every item in ObjectList has 'storage' pointing to the same memory location (essentially sharing the storage).
This issue does not occur when I allocate the list on the stack manually using
MyObject<MyType> ObjectList[100] = { MyObject<MyType>(param1),
MyObject<MyType>(param1), ...};
Every storage has its own memory location when I declare MyObject with the above line.