Skip to content

Getting a reference from a pointer inside a pointer_variant #2

Description

@brenoguim

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions