Initializing a table of delegates with no-op stubs

H. S. Teoh hsteoh at quickfur.ath.cx
Mon Jan 13 18:06:23 UTC 2020


On Sat, Jan 11, 2020 at 09:51:24AM -0500, Steven Schveighoffer via Digitalmars-d wrote:
> On 1/11/20 4:40 AM, Rainer Schuetze wrote:
[...]
> > void noop(int) {}
> > 
> > enum void delegate(int) dg_noop = (int x){ noop(x); };
> 
> No need for the function call
> 
> enum void delegate(int) dg_noop = (int x) {};
[...]

Mmm, very nice!  Kind of a weird paraphrasis, but at least it works. To
minimize hassle, I turned it into a template:

	enum void delegate(Args) doNothing(Args...) = (Args args) {};

	struct S {
		void delegate(int x) dg1 = doNothing!(int);
		void delegate(float y) dg2 = doNothing!(float);
		void delegate(int x, int y) dg3 = doNothing!(int,int);
	}

Do you think the first line is worth an addition to Phobos, maybe
alongside toDelegate?  It's non-obvious enough that it might save a
newbie (or a not-so-newbie like myself :-P) a lot of headache.


T

-- 
Political correctness: socially-sanctioned hypocrisy.


More information about the Digitalmars-d mailing list