On Saturday, 24 August 2013 at 12:12:29 UTC, Joseph Rushton Wakeling wrote:

Hi Joseph,

I'm not really a D guru like others, but...

... an I want to wrap it in another struct, B. If I do this manually it would be something like,

    struct B
    {
        private A a;
        void foo(int n) { return a.foo(n); }
        void foo(Range)(Range r) { return a.foo(r); }
        // ... etc ...
    }

But suppose that I don't a priori know the list of functions (and function arguments) that need to be wrapped. How could I go about working this out, with a generic programming approach?

For this case I would use alias this, if you want to wrap every method...

    struct B
    {
        private A a;
        alias a this;
    }

More specifically, how could I work this out limited to a specific function of A (say, foo) ... ?

I think that you have to explicitly wrap them, maybe with a template to alleviate the copy/past...
But maybe someone else can suggest a better solution!

- Paolo Invernizzi

Reply via email to