No TypeTuple expansion for assert?

H. S. Teoh via Digitalmars-d digitalmars-d at puremagic.com
Fri Oct 3 13:26:25 PDT 2014


On Fri, Oct 03, 2014 at 08:02:14PM +0000, monarch_dodra via Digitalmars-d wrote:
> On Friday, 3 October 2014 at 19:21:38 UTC, Dmitry Olshansky wrote:
> >03-Oct-2014 23:08, Ali Çehreli пишет:
> >>I know that assert is not a function but it would be nice to have.
> >>
> >
> >Indeed. If we make it a function and put in object.d would anyone
> >notice the change?
> 
> I think there are semantics that prevent that. Such as "assert(0)", or
> removing the evaluation of arg in "assert(arg())" altogether in
> release.

	void assert(lazy bool exp) {
		version(assert) // (!)
			if (!exp) __fatal_runtime_error();
	}

Doesn't work for assert(0); but does work for not evaluating the
argument in release build. (Yeah I know, implementation of 'lazy' leaves
a lot to be desired, but hey, that can be argued to be a QOI issue.)


T

-- 
This is not a sentence.


More information about the Digitalmars-d mailing list