c++ - a couple of questions.. (mixins and inout)
- Ivan Senji (35/35) Sep 07 2004 class A
- Ivan Senji (3/38) Sep 07 2004 Sorry! Wrong NG :)
class A { void func(){} template funcdecl(Type) { void func(Type t){writefln(t);} } mixin funcdecl!(int) ; mixin funcdecl!(float) ; } We all know this doesn't work but it can be fixed by adding aliases: mixin funcdecl!(int) a1; mixin funcdecl!(float) a2; alias a1.func func; alias a2.func func; And now the name overloading works, but: what if i want to mixin constructors, how can i do that? template funcdecl(Type) { this(Type t){} } mixin funcdecl!(int) a1; mixin funcdecl!(float) a2; alias a1.this this; alias a2.this this; This doesn't work! And another question: class A{} void func(inout A a){} func(new A); --> this doesn't work why? (new A is not an lvalue) If C++ can do it why not D? It is a lot more complicated to assign temporary objects to variables and then pass it as an inout param then to pass it directly.
Sep 07 2004
Sorry! Wrong NG :) "Ivan Senji" <ivan.senji public.srce.hr> wrote in message news:chjmjn$268h$1 digitaldaemon.com...class A { void func(){} template funcdecl(Type) { void func(Type t){writefln(t);} } mixin funcdecl!(int) ; mixin funcdecl!(float) ; } We all know this doesn't work but it can be fixed by adding aliases: mixin funcdecl!(int) a1; mixin funcdecl!(float) a2; alias a1.func func; alias a2.func func; And now the name overloading works, but: what if i want to mixin constructors, how can i do that? template funcdecl(Type) { this(Type t){} } mixin funcdecl!(int) a1; mixin funcdecl!(float) a2; alias a1.this this; alias a2.this this; This doesn't work! And another question: class A{} void func(inout A a){} func(new A); --> this doesn't work why? (new A is not an lvalue) If C++ can do it why not D? It is a lot more complicated to assign temporary objects to variables and then pass it as an inout param then to pass it directly.
Sep 07 2004