This patch is supposed to address the issue that we don't evaluate arrays if the contain non POD types.
The idea is to record the index of the current element being constructed, and keep calling the constructor
in a loop until we construct every element.
I think this last argument might be worth mentioning in the docstring above. E.g. could someone use this to initialize an object in a nested array like NonPod arr[3][3]? If no, we should let the potential users know. If yes, what should the Idx be in that case?