On Saturday, 10 July 2021 at 01:23:26 UTC, Steven Schveighoffer
wrote:
On 7/9/21 8:44 PM, russhy wrote:
On Friday, 9 July 2021 at 23:34:25 UTC, Ali Çehreli wrote:
On 7/9/21 4:12 PM, russhy wrote:
>> One way of forcing compile-time evaluation in D is to
>> define
an enum
>> (which means "manifest constant" in that use).
That's all I meant. It was a general comment.
> this is very bad, assert are good because they are one
> liner,
making it
> 2 line to avoid GC is just poor design, compiler should be
smarter
There must be a misunderstanding. The one-liner does not
allocate either (or @nogc is broken).
https://run.dlang.io/is/HJVSo0
it allocates
That test is possibly showing the wrong thing. You are
capturing all allocations, not just the concatenation.
Change the assert line to:
```d
string s = __FUNCTION__ ~ "This is an error message";
```
And no GC allocations occur. Even without optimizations turned
on.
I think it's the throwing/catching of the `Throwable` that is
allocating. But I don't know from where the allocation happens.
-Steve
i think you are right