Feature request: Bringing mixed-in operators and constructors to the overload set
Tommi
tommitissari at hotmail.com
Sun Nov 10 10:23:07 PST 2013
We can bring mixed-in methods to the desired overload set, but
not operators or constructors. Here's what I mean:
mixin template methodMix()
{
void foo(int n) { }
}
mixin template operatorMix()
{
void opBinary(string op)(int n) { }
}
mixin template ctorMix()
{
this(int n) { }
}
struct MethodTest
{
mixin methodMix mix;
alias foo = mix.foo;
void foo(string s) { }
}
struct OperatorTest
{
mixin operatorMix mix;
alias opBinary = mix.opBinary;
void opBinary(string op)(string s) { } // [1]
}
struct CtorTest
{
mixin ctorMix mix;
// If only I could do the following to bring the
// mixed-in constructor to the overload set:
//alias this = mix.this;
this(string s) { }
}
void main()
{
MethodTest mt;
mt.foo(3);
OperatorTest ot;
ot + 3;
auto ct = CtorTest(3); // [2]
}
-----------------
1. Error: template test.OperatorTest.opBinary(string op)(string
s) conflicts with alias test.OperatorTest.opBinary
2. Error: constructor test.CtorTest.this (string s) is not
callable using argument types (int)
More information about the Digitalmars-d
mailing list