https://issues.dlang.org/show_bug.cgi?id=17645
--- Comment #3 from Tomer Filiba (weka) <[email protected]> --- (In reply to Steven Schveighoffer from comment #1) > Do you have a better use case? the use case may sound odd, but it's surprisingly common. suppose you have struct Foo { private int x; @property int someTrivialProperty() const pure @nogc { assert(x > 8, "oh no x=%s".format(x)); return x; } } `format` does GC and isn't pure. the property itself is perfectly pure and @nogc and whatnot, but by adding an assert i have to remove these attributes from it. so we have ASSERT which hides away the impurity and GC-ness, since it it blows up we really don't care about the GC or purity. ASSERT!"oh no x=%s"(x > 8, x); we practically use it everywhere. > i.e. you don't need access to the pure function's stack frame, so you can > have a function instead of a delegate. maybe, but it means i can't write it in the same statement, i.e. this won't work assumePure({x++}); and i'll have to use void function() fn = {x++}; assumePure(x); which defeats the purpose of easy-to-spell-out lambdas --
