Closed awulkiew closed 5 years ago
Maybe commit:
https://github.com/boostorg/container/commit/0691018321f03aad662d7d2ae5b3e060c7109e3c
can fix the issue.
This solves the problem for me. Thank you!
I think the issue may be closed. I'll check the regression matrix in a while and see if the errors disappeared. In the worst case I'll reopen it but I doubt this will be needed.
Do you plan to release it with 1.70?
Yes, just got permission from the release manager and I've merged the commit into the master branch.
Recently I was notified that code compiling some time ago and using
container::vector
stopped compiling at some point in the past (not sure when). The code I'm talking about is Geometry R-tree with Interprocess allocator.The R-tree has internal and leaf nodes. Internal nodes contain (more or less) vector of pointers to variants containing either internal or leaf nodes. So when the vector type is defined the internal node type is incomplete but this is fine since pointers are stored.
At some point this code stopped compiling with Clang in gnu++98 and c++03 modes when the pointer is
interprocess::offset_ptr
taken frominterprocess::allocator
. It works withcontainer::new_allocator
though. I was able to limit the test case (see below). The original errors reported for Geometry can be found here. These are the tests rtree_interprocess_XXX_dyn, e.g. this one.I didn't dig much but it seems that
variant
checks sometype_traits
after it's instantiated by vector's check ofboost::move_detail::is_convertible
:and the instantiation is done at
trigger()
. The type passed to the type traits is expected to be complete. It seems all versions of Clang are affected. I was able to reproduce it with 3.8.Do you have some idea about a workaround for this?
Below is the limited test case in case you wanted to play with it.