On Friday, 10 May 2024 at 13:27:40 UTC, Dukc wrote:
Steven Schveighoffer kirjoitti 10.5.2024 klo 16.01:
On Friday, 10 May 2024 at 11:05:28 UTC, Dukc wrote:
This also gets inferred as `pure` - meaning that if you use
it twice for the same `WeakRef`, the compiler may reuse the
result of the first dereference for the second call, without
checking whether the referred value has changed!
This would be weak pure since the reference is mutable. This
cannot be memoized.
The difference is the type. With a pointer parameter (both a
bare one and one in a struct), the compiler can cache the
result only when the pointed data is similar. However, here we
have an integer parameter. It can be cached if it itself is
similar to the one in the other function call. The compiler
doesn't have to know, nor can know, when a `size_t` is a
pointer in disguise.
This why I would just use ref counting if I were the topic
author, trying to be smart will often comes back when one doesn't
expect.
And as stated by previous author if the goal is to have
self-clearable weak reference it will need some infrastructure
anyway, so tbh this will greatly outweight any possible benefits
of having weak refs.