Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Getting a reference from a pointer inside a pointer_variant #2

Open
brenoguim opened this issue Nov 9, 2018 · 1 comment
Open

Getting a reference from a pointer inside a pointer_variant #2

brenoguim opened this issue Nov 9, 2018 · 1 comment

Comments

@brenoguim
Copy link

brenoguim commented Nov 9, 2018

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.

@foonathan
Copy link
Owner

Yes, I plan on implementing that but haven’t thought about the problem yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants