Yes, perhaps bad wording of mine.
> Therefore the statement:
>
> bArray = { false };
>
> does not initialize bArray because bArray was previously defined.
>
> I am assuming that what is happening that the { false } value on the right of the assignment statement is being converted to a temporary std::array<bool, 100> object which is initialized to { false }. This temporary object is then assigned to bArray.
>
> Is my assumption correct?
Yes, the '{ false }' is of magic C++11 type 'std::initializer_list'.
Converted from it is a temporary object of type 'std::array<bool, 100>'
The "conversion" is same as initialization as aggregate and then it
is assigned to 'bArray'. Actually compiler likely optimizes all the
temporaries out.