fake RefCounted for CTFE?
Steven Schveighoffer
schveiguy at gmail.com
Tue Jun 16 00:31:45 UTC 2020
On 6/15/20 8:23 PM, Steven Schveighoffer wrote:
> On 6/15/20 5:39 PM, Timon Gehr wrote:
>> On 15.06.20 23:18, Steven Schveighoffer wrote:
>>> I'm doing some stuff with RefCounted for a factory-like expression,
>>> where I expect the factory harnesses are going to be very
>>> short-lived. However, these don't work at CTFE (because malloc/etc
>>> aren't available).
>>>
>>> Would it make sense for RefCounted to turn into GC for CTFE mode?
>>> That is, if RefCounted is used during CTFE, it just allocates on the
>>> GC heap and doesn't actually do ref counting. The end result will be
>>> a ref counted struct that somehow is flagged that it's never going
>>> away (and it shouldn't, if it's generated at compile time).
>>>
>>> Then you could use functions that return RefCounted items as static
>>> initializers, or use libraries that use RefCounted at compile time
>>> without issues.
>>>
>>> What do you think?
>>
>> I think it should work in CTFE, but it cannot break @nogc.
>
> Damn you're right. I can't think of a good way around that.
>
> All I can think of is a specialized function which allocates only in
> CTFE, and the compiler pretends it can be @nogc.
Another suggestion I found on the issue tracker:
https://issues.dlang.org/show_bug.cgi?id=18119
-Steve
More information about the Digitalmars-d
mailing list