template operator overload
Namespace
rswhite4 at googlemail.com
Wed Nov 27 09:43:33 PST 2013
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];
----
More information about the Digitalmars-d-learn
mailing list