Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import std.traits;
- struct Lock
- {
- static opCall ()
- {
- Lock l;
- l.lock();
- return l;
- }
- ~this ()
- {
- unlock();
- }
- private:
- void lock () {}
- void unlock () {}
- }
- void lock (T) (T value, void delegate (Unqual!(T)) dg)
- {
- auto l = Lock();
- dg(castAwayShared(value));
- }
- void main ()
- {
- shared int i;
- lock(i, (x) {
- // operate on i
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement