- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 193
Description
Essentially, flex_vector can (always?) allocates objects at addresses that do not align with the type's alignment requirements.  I uncovered this while using Eigen with immer, which causes some nasty segfaults when there are alignment violations on vectorized types.
I added a repro case here: sissow2@9d295b8 .  The sanity check with std::vector passes always, while the immer::flex_vector variant always fails :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
flex_vector-alignment is a Catch v2.13.7 host application.
Run with -? for options
-------------------------------------------------------------------------------
direct alignment
-------------------------------------------------------------------------------
/home/sissow2/projects/immer/test/flex_vector/alignment.cpp:32
...............................................................................
... snip ...
/home/sissow2/projects/immer/test/flex_vector/alignment.cpp:41: FAILED:
  CHECK( v[i].is_aligned() )
with expansion:
  false
===============================================================================
test cases: 2 | 1 passed | 1 failed
assertions: 8 | 4 passed | 4 failed
This might be related to #228, but the reporter's repro case is for a non-vectorized type so I'm not sure it's the same issue.
I might be able to create a PR with a fix, but wondering if you have any ideas before I dive into it.
Also: I'm really liking this library!  This and lager have been making my life so much easier.  Also thanks for providing a nix-shell environment, it made creating this repro case a breeze.