FR: Add Array::operator= (std::initializer_list)

juce::Array supports initializer-list construction, but assignment via initializer lists is fragile for non-trivially constructible types. Providing a dedicated operator=(std::initializer_list) would make behaviour consistent and predictable, and more akin to std::vector.

Possible implementation:

Array& operator= (const std::initializer_list<ElementType>& list)
{
    clearQuick();
    ensureStorageAllocated ((int) list.size());

    for (const auto& e : list)
        add (e);

    return *this;
}

Example usage:

struct Preset
{
    String name;
    float param1 = {};
};

Array<Preset> myPresets;

// reassign somewhere else
myPresets = {  { "a", 1.0f }, { "b", 10.0f } };
2 Likes