Extending library functions

simendsjo simendsjo at gmail.com
Thu Oct 18 04:43:37 PDT 2012


On Thursday, 18 October 2012 at 11:31:47 UTC, tn wrote:
> Hi.
>
> I want to extend math library functions to work with my own 
> type. However, the definition for my own type seems to prevent 
> automated access to the original function. How can I fix this 
> unexpected behavior?
>
> Simplified example:
> --------------------
> import std.math;
>
> int exp2(int x) {
>     return 1 >> x;
> }
>
> void main() {
>     assert(exp2(0.0) == 1.0);              // <= why does not 
> this work anymore?
>     //assert(std.math.exp2(0.0) == 1.0);   // <= this works
> }
> --------------------

You need to manually add std.math.exp2 to the overload set so 
importing external methods doesn't hijack your methods:
http://dlang.org/function.html#overload-sets

alias std.math.exp2 exp2;



More information about the Digitalmars-d-learn mailing list