Like that:

`someType(someValue)` (or, what's the same, `someValue.someType`) means 
"convert this value to this type", and compiler should consider these types 
(that of the value, and to which you convert) as compatible to allow this 
operation, and it can use an additional transformation for this (you can define 
it creating a `converter` for these types).

`cast[someType](someValue)`, on the other hand, means just "interpret this 
value (its bits sequence) as being of such a type"; it doesn't involve any 
compatibility-checks nor transformations of the value - you relief the compiler 
of responsibility for validity of type change; so you can convert between 
formally incompatible types - just make sure, that the cast really makes sense 
(as in this instance - one type is pointer, the other - a procedure - is really 
a pointer too).

I think you can find it in the manual, and possibly it's better described there.

Reply via email to