Coming back, Unique, opDot and whatever else
Stanislav Blinov
stanislav.blinov at gmail.com
Fri Jan 17 23:18:22 PST 2014
On Friday, 17 January 2014 at 20:25:37 UTC, Stanislav Blinov
wrote:
> Heh, now I'm even more leaning towards a proxy. Because
> honestly, x.opDispatch!("release")() is even uglier than
> x.opDot().release() :D...
Well, what can I say? I didn't need to go very far. Because
Phobos has such proxy. Which is called std.typecons.Proxy :) I
skimmed over it in the docs several times, probably because the
docs just say "Make proxy for a." without going into much detail.
But the last time I spotted it, associative memory kicked in, I
guess, and I stayed a bit longer to actually look at the example.
There is, however, at least one issue with it: template arguments
are not forwarded properly:
---
class Widget {
auto inconsistent(T...)(T args) if (T.length) { return args[0];
}
}
auto widget = new Widget;
widget.inconsistent("hello", 10, 20); // works
auto uwidget = createUnique!Widget();
uwidget.inconsistent("hello", 10, 20); // Error: template
instance inconsistent!() does not match template declaration
inconsistent(T...)(T args) if (T.length)
uwidget.inconsistent!(string,int,int)("hello", 10, 20); //works
---
I hadn't had a chance for a closer inspection yet as to why
though. In any case, that Proxy is a nice thing to have in the
library!
More information about the Digitalmars-d-announce
mailing list