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);
}