Mixin template function
Jacob Carlborg
doob at me.com
Wed Feb 13 23:37:50 PST 2013
On 2013-02-14 06:49, cal wrote:
> And a related question:
>
> class A
> {
> void foo(int i){}
> void foo(Tuple!(int) i){}
> }
>
> class B: A
> {
> override void foo(int i){}
> }
>
>
> int main()
> {
>
> auto b = new B;
> b.foo(tuple(5));
> }
>
> This fails to compile. Why can't B use A's tuple overload of foo()? If I
> do this:
>
> class B: A
> {
> override void foo(int i){}
> void foo(Tuple!(int) i){} // no override keyword is deprecated
> }
>
> The compiler warns about not using the override keyword, so it must be
> seeing the function?
The base class and the subclass have different overload sets. You need
to bring in "foo" from the base class into the overload set in the
subclass. You can do this by using an alias:
class B : A
{
alias A.foo foo;
}
--
/Jacob Carlborg
More information about the Digitalmars-d-learn
mailing list