void myFunc(T: !=int)(T value)
Steven Schveighoffer
schveiguy at yahoo.com
Fri Aug 22 06:23:11 PDT 2008
"tsalm" wrote
> Le Fri, 22 Aug 2008 14:33:23 +0200, Jarrett Billingsley
> <kb3ctd2 at yahoo.com> a écrit:
>
>> -------------------------------------------
>> "tsalm" <tsalm at free.fr> wrote in message
>> news:op.ugacfwj7010shu at papillon.lan...
>> Hello,
>>
>> I want to do something like this :
>>
>> class MyClass
>> {
>> void myFunc(int intValue)
>> {
>> /* Do something with this int */
>> }
>>
>> void myFunc(T: !=int)(T valueNotInt)
>> {
>> /* valueNotInt can not be an int */
>> }
>> }
>>
>> Thanks in advance,
>> TSalm
>> -------------------------------------------
>>
>> void myFunc(T: int)(int intValue) {}
>> void myFunc(T)(T notIntValue) {}
>>
>> :)
>>
>
> In fact, the exact operator is :
> int opCmp(MyStruct m)
>
> It must be use, when this struct is in an array, to sort this array
> And strangly, the method
> int opCmp(T:MyStruct)(MyStruct m)
> is not take by ".sort"
> :(
Ah, your problem is that template methods cannot be virtual. .sort is
trying to use the virtual method int opCmp(Object) in Object.
Overload with Object as the argument for the non-int function:
int opCmp(Object o); // this will be used in .sort
int opCmp(int i);
-Steve
More information about the Digitalmars-d-learn
mailing list