compile time method check

Weed resume755 at mail.ru
Fri Dec 26 22:01:53 PST 2008


Simen Kjaeraas пишет:
> On Fri, 26 Dec 2008 20:15:30 +0100, Weed <resume755 at mail.ru> wrote:
> 
>> Can I at compile time check whether there is a facility method
>> (toString(), for example)?
>>
>> Today I wrote:
>>
>>                 static if ( __traits(isArithmetic, Element) ) {
>>                     ret ~= toString(this[i,j]) ~ "\t";
>>                 } else {
>>                     ret ~= this[i,j].toString ~ "\t";
>>                 }
>>
>> It works but it is wrong
> 
> I believe this works:
> 
> static if (is(typeof(this[i,j].toString))) {
>     ret ~= this[i,j].toString;
> } else {
>     ret ~= toString(this[i,j]);
> }
> 

No, this cause error:

toString () does not match parameter types (float)

( condition is always resolved to else {...} )


More information about the Digitalmars-d-learn mailing list