On Friday, 27 March 2015 at 21:33:19 UTC, bitwise wrote:
class Test{}

void main()
{
        const(Test)[string] tests;
        tests["test"] = new Test();
}

This code used to work, but after upgrading to dmd 2.067, it no longer does.
--Error: cannot modify const expression tests["test"]

How do I insert an item into an associative array of const objects?

Generally speaking, you can insert an item in a constructor:
---
class Test{}

const (Test)[string] tests;

static this()
{
    tests["test"] = new Test();
}

class Bar
{
    immutable (Test)[string] tests2;
    this()
    {
        this.tests2["test"] = new Test();
    }
}

void main()
{
    auto bar = new Bar;
}
---

The same problem already existed before 2.067 for AA with strings as value (string[string]), since they are immutable.

Reply via email to