On Tue, 27 Mar 2012 11:26:08 -0400, Stewart Gordon <smjg_1...@yahoo.com> wrote:

On 27/03/2012 16:12, Stewart Gordon wrote:
On 26/03/2012 14:37, Steven Schveighoffer wrote:
<snip>
So for now, I use the undocumented old-style functions. One other thing that this "wrapper" method loses is covariance, which I use a lot in dcollections. I haven't filed a bug on it, but there is at least a workaround on this one -- the template can capture the
type of "this" from the call site as a template parameter.

I can't seem to get this to work at the moment:
<snip>

Just figured how to do it.

     T method(this T)() {
         return cast(T) this;
     }

Talk about having not got into D2 programming before....

One tip -- if you are doing method as above inside a class and not an interface, you can use:

cast(T)cast(void*)this;

which should avoid the unnecessary dynamic cast. This will *not* work in an interface. I'd argue the compiler should be aware of the special type of T for doing casts...

-Steve

Reply via email to