On Friday, 14 September 2012 at 00:31:15 UTC, Andrej Mitrovic wrote:
On 9/14/12, timotheecour <[email protected]> wrote:
It has issues when the class is defined in a different modules,
but not always!

This looks like a compiler bug. Feel free to file it in
http://d.puremagic.com/issues/

I will.

here's my other weird example, which I managed to simplify to as follows. Basically if:
1) the function is overloaded, and
2) it is a template, and
3) it is a member function (either static or nonstatic)

Then you get a CT error that looks like: Error: (A).fun!(2) is not an lvalue


That's a bug too right? (but different!)

I wish delegates were more 1st class citizens and behaved...

----
void run(Fun)(Fun fun){
}

class A {
        void fun1(int T)() if(T==2) {   }

        void fun2(int T)() if(T==1) {   }
        void fun2(int T)() if(T==2) {   }

        void fun3(){}
        void fun3(int x){}

        void fun4(int T)() if(T==1) {   }
        void fun4(int T)(int x) if(T==2) {      }

        void fun5(T)()  {       }
        void fun5(T)(int x)  {  }

        static void fun6(int T)() if(T==1) {    }
        static void fun6(int T)() if(T==2) {    }
}

void fun7(int T)() if(T==1) {   }
void fun7(int T)() if(T==2) {   }



void main(){
        auto a=new A;
        run(&a.fun1!2); //works
        //run(&a.fun2!2); //CT Error: a.fun2!(2) is not an lvalue
        run(&a.fun3); //works
        //run(&a.fun4!2); //CT Error: a.fun4!(2) is not an lvalue
//run(&a.fun5!double); //CT Error: a.fun5!(double) is not an lvalue
        //run(&A.fun6!2); //CT Error: (A).fun6!(2) is not an lvalue
        run(&fun7!2); //works
}
----

Reply via email to