On Tuesday, 11 February 2014 at 17:09:39 UTC, Stanislav Blinov
wrote:
Maybe an additional function like this could be helpful:
--8<--
HeadUnshared!T localOp(string op,T,V)(T what, V mod) if (is(T
== shared))
{ ... }
-->8--
Or even something like this:
--8<--
ref auto assumeLocal(T)(ref T v) if (is(T == shared))
{
// Cast via pointer to preserve lvalue
return *cast(HeadUnshared!T*)&v;
}
-->8--
With which we can perform this:
--8<--
--assumeLocal(m_numWaitersBlocked);
-->8--
What do you think?
I think it's a good idea. Please file bugzilla requests for this
and the final method issue :-)
Regarding making Mutex methods final, this may require some care
because existing projects might rely on them being virtual. I'm
pretty sure vibe.d, for example, overrides Condition as well. I
don't know what the best process is for changing these to final
in terms of breaking code.