Phobos colour module?

H. S. Teoh via Digitalmars-d digitalmars-d at puremagic.com
Tue Jan 6 10:59:36 PST 2015


On Tue, Jan 06, 2015 at 10:44:38AM -0800, Walter Bright via Digitalmars-d wrote:
> On 1/6/2015 10:07 AM, H. S. Teoh via Digitalmars-d wrote:
> >Implementing union painting in CTFE would singlehandedly solve
> >(almost?) all of std.math CTFE issues, AFAICT.
> 
> I thought it did allow painting of the form *(cast(T*)&t).

Was that a recent addition? I don't remember that working last year.

In any case, the current std.math code tries to achieve repainting via
unions, which currently doesn't work in CTFE:

	ulong ctfeFunc(double d) {
		union U {
			double f;
			ulong  ul;
		}
		U u;
		u.f = d;
		return u.ul;	// <--- CTFE error
	}
	enum x = ctfeFunc(3.141592);


Maybe I remembered wrong, but the original std.math code relied on
*(cast(T*)&t) to work, but was rewritten to use union repainting, IIRC
because union painting is considered more likely to be implemented in
CTFE (? -- my guess; I could be wrong).

In any case, it's great news that repainting is now supported in CTFE.
Hopefully this means more of std.math will be usable at compile-time
soon!


T

-- 
"The whole problem with the world is that fools and fanatics are always so certain of themselves, but wiser people so full of doubts." -- Bertrand Russell. "How come he didn't put 'I think' at the end of it?" -- Anonymous


More information about the Digitalmars-d mailing list