Can I set the base class like this?
frame
frame86 at live.com
Tue Jan 26 14:15:25 UTC 2021
On Tuesday, 26 January 2021 at 04:39:07 UTC, Jack wrote:
> note the body is the same, what changes is the base class. I'd
> like to avoid repeating myself when the body is the same and
> only the base class changes.
You would have to call it with correct instantiation like
alias Foo = C!(A!bool);
Of course T!MyType would not work but I don't think you want that
anyway.
It very depends on the use-case but just use a mixin where you
can pass any type you want from template constructor if you don't
want to repeat yourself:
class MyType {
}
class A {
}
class B {
}
template base(T) {
static if (is(T : A)) {
bool doSomething() {
return true;
}
}
else static if (is(T : B)) {
bool doSomething() {
return false;
}
}
else {
void doSOmethingElse() {
}
}
}
class C(T1, T2) {
mixin base!T2;
T1 whatever() {
return new T1;
}
}
alias Foo = C!(MyType, A);
alias Baa = C!(MyType, B);
More information about the Digitalmars-d-learn
mailing list