Description
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.