On Thursday, 25 December 2014 at 15:50:07 UTC, Danny wrote:
Hi,

I'm trying to learn how opDispatch works. Unfortunately, a very simple example already doesn't work (error: no property 'a' for type 'Foo'):

import std.stdio : writeln;

struct X {
        int a;
}
class Foo {
        X value;
        template opDispatch(string s) {
                value.opDispatch!(s) opDispatch;
        }
}
int main() {
        auto f = new Foo;
        writeln(f.a);
        return 0;
}

What am I missing?

Is there another way to make Foo forward all unknown things to X ?

I am not sure why your code even compiles, but this works better:

import std.stdio;

struct X
{
    int a;
}

class XX
{
    X value;
    auto opDispatch(string s)() {
       mixin("return value." ~ s ~ ";");
    }
}

void main() {

    XX x = new XX();
    writeln(x.a);
}

Reply via email to