On Wednesday, 16 January 2013 at 20:05:40 UTC, Martin Drasar wrote:
Okay, I have hit another thing when dealing with shared delegates.

If I uncomment that line I get this error:

Error: function main.B.execute (void delegate(B b) shared c) is not callable using argument types (void delegate(B b) shared) shared

This error probably appears because typeof b is B and typeof _b is shared(B). My question is - why? Is it a bug or does the shared delegate made it shared and it is ok? And what to do with it? I can cast away
shared of _b, but is it a correct and clean way?

Thanks for your input.

Martin

Yes, it happens so (shared function made it a member). Casting away shared is UB but it can be done if your are sure. Consider rewriting the code and eliminating unnecessary shareds and please stop attaching "> " to each line of code.

To workaround add another method:

void callback(B b)
{
        _b.execute(&callback);
}

Reply via email to