You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hey!
One of the problems I faced when implementing my tiny::pointer_variant<T*, U*> was to get a T**. Since (in my implementation), the first item of the variant has a 0 bit tag, the pointer actually has a non-dirty bit pattern, so it should be possible to take the pointer to the element inside the variant.
I had a hard time implementing that without violating strict aliasing rules. (And I still don't know if I was able to implement that without UB).
The motivation to get a T** is to be able to create a tiny::pointer_dyn_array<T*>, which is a pointer_variant<T*, T**>, and contains the T* when the array has size 1 (therefore avoiding allocation and indirection in size=1).
Since the tiny::pointer_dyn_array<T*> has a begin/end interface, it's necessary to get the T** from the variants first element.
Is there a plan to implement a pointer_dyn_array? I'm curious to know how you'd implement that.
The text was updated successfully, but these errors were encountered:
Hey!
One of the problems I faced when implementing my
tiny::pointer_variant<T*, U*>
was to get aT**
. Since (in my implementation), the first item of the variant has a0
bit tag, the pointer actually has a non-dirty bit pattern, so it should be possible to take the pointer to the element inside the variant.I had a hard time implementing that without violating strict aliasing rules. (And I still don't know if I was able to implement that without UB).
The motivation to get a
T**
is to be able to create atiny::pointer_dyn_array<T*>
, which is apointer_variant<T*, T**>
, and contains the T* when the array has size 1 (therefore avoiding allocation and indirection in size=1).Since the
tiny::pointer_dyn_array<T*>
has abegin/end
interface, it's necessary to get theT**
from the variants first element.Is there a plan to implement a
pointer_dyn_array
? I'm curious to know how you'd implement that.The text was updated successfully, but these errors were encountered: