Yes, this is guaranteed by C ++ 11 12.6 / 3 ([class.init] / 3):
When an array of class objects is initialized (explicitly or implicitly), and the elements are initialized by the constructor, the constructor should be called for each element of the array , following the order of the substring
source share