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