implicit constructor template instantiation
Daniel919
Daniel919 at web.de
Fri Dec 1 12:47:19 PST 2006
Hi, implicit template instantiation is working for
other class members as expected (first code example shown below).
So why not make it working for constructor "this", too ?
Is this feature just missing or is it technically impossible ?
In the former case I would be pleased to see this feature on the todo
list, because it would solve the problem of constructor inheritance
(like I showed in my last post to this topic, which is quoted below).
Thanks in advance
------------------------------------------------
import std.stdio;
class Base
{
this() {}
void init()
{
value = 0;
}
void init(int a)
{
value = a;
}
int value;
}
class Derived : Base
{
this() {}
void superinit(A...)(A a)
{
init(a);
}
}
int main(char[][] args)
{
Derived derived;
derived = new Derived();
derived.superinit();
writefln(derived.value);
delete(derived);
derived = new Derived();
derived.superinit(1);
writefln(derived.value);
delete(derived);
return 0;
}
------------------------------------------------
Daniel919 wrote:
> Hi,
>
> this code is perfectly valid and working
> with dmd 0.174:
> ------------------------------------------------
> import std.stdio;
>
> class Base
> {
> this()
> {
> value = 0;
> }
>
> this(int a)
> {
> value = a;
> }
>
> int value;
> }
>
>
> class Derived (A...) : Base
> {
> this(A a)
> {
> super(a);
> }
> }
>
> int main(char[][] args)
> {
> Derived!(int) derived = new Derived!(int)(1);
> writefln(derived.value);
> return 0;
> }
> ------------------------------------------------
>
> But I would like to use implicit template
> instantiation on constructor this as well.
> So it would look like:
>
> ------------------------------------------------
> ...
> class Derived : Base
> {
> this(A...)(A a)
> {
> super(a);
> }
> }
> ...
> Derived derived = new Derived(1);
> ...
> ------------------------------------------------
>
> Couldn't the constructor be implicitly templated, like
> member function's, for example:
> void print(A...)(A a) { } ?
>
> Thanks for your replies in advance
>
> Daniel
More information about the Digitalmars-d
mailing list