On Wednesday, 27 November 2013 at 17:25:49 UTC, Shammah
Chancellor wrote:
On 2013-11-27 16:07:50 +0000, Namespace said:
Just out of curiosity: Is it possible to call an overloaded
operator with a template type?
----
import std.stdio;
struct A {
void opIndex(T)(size_t index) {
}
}
void main() {
A a;
a.opIndex!int(0); // [1]
a!int[0]; // [2]
}
----
[1] works, but [2] fails.
How can I call opIndex with bracket syntax and a typename? Or
is this not possible?
You need to simply use template deduction, and cast the
parameter to what you're wanting to use between the brackets.
a[cast(int)0] (although zero is already an int);
Inside the brackets I want an int. But I also want an extra type.
E.g.
----
A a;
a!string[4];
----