On Friday, 29 July 2022 at 21:56:20 UTC, Andrey Zherikov wrote:
In the example below `func` changes its `const*` argument. Does this violates D's constness?



It's smart to use `delegate`, but `immutable` doesn't necessarily mean `const`. So if we use `const char`:

```d
struct S
{
    char s;

    void delegate(char s) update;
}

void func(const S* s)
{
    writeln(*s);
    s.update('D');
    writeln(*s);
}

import std.stdio;

void main()
{
    auto s = S('C');
    s.update = (_) { s.s = _; };

    writeln(s);
    func(&s);
    writeln(s);
} /* Prints:
S('C', void delegate(char))
const(S)('C', const(void delegate(char)))
const(S)('D', const(void delegate(char)))
S('D', void delegate(char))
*/
```
SDB@79

Reply via email to