Pitfalls of delegates inside ranges

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Mon Sep 2 04:55:46 PDT 2013


On 02/09/13 06:41, H. S. Teoh wrote:
> Spot the bug. :)

Ouch!! :-)

The first time I ever implemented random sampling was in C, and it was a version 
of the same algorithm as in Phobos, but written for the GNU Scientific Library 
instead.  Most of the complex types in GSL are implemented as pointers to 
"objects" which consist of some kind of data payload plus function pointers that 
make up the object's API.

So, in that context, it was trivial to use function pointers to manage the 
sampling algorithm's switch mid-sample from one skip() function to another.

But in D -- risky at least for now, until things like RandomSample are 
re-implemented as reference types (which they should be).

I suppose one way round this might be to re-implement the to-be-delegated-to 
function as a free function whose argument is a reference to the calling object, 
but that's finnicky and not very nice.


More information about the Digitalmars-d-learn mailing list