
Yes, I had proposed StaticVector. Here is the repository: https://github.com/ahundt/Boost.StaticVector Here is a link to the original discussion via google groups: https://groups.google.com/d/topic/boost-developers-archive/4n1QuJyKTTk/discu... I would be interested in working with you to complete either my version or yours. Did you have any thoughts or questions regarding my implementation? There are a few items related to my implementation on the github ticket list that came from the discussion thread that need resolving before the next round, but nothing too bad. Cheers! Andrew Hundt On Wed, Dec 12, 2012 at 11:08 AM, Adam Wulkiewicz <adam.wulkiewicz@gmail.com
wrote:
Hi,
I'm developing R-tree container for Boost.Geometry. To keep it short, there are containers of Values in leaf nodes. Those containers must have push_back() functionality. For static-size nodes I'm using a container based on boost::array. Unfortunately this means that default constructors of stored Values are called when the container is created. I'd like not to expect that Values have their default ctor implemented. I've implemented an alternative container using boost::aligned_storage. This is just a proof of concept. The code is available here:
https://svn.boost.org/svn/**boost/sandbox-branches/** geometry/index/tests/static_**vector.cpp<https://svn.boost.org/svn/boost/sandbox-branches/geometry/index/tests/static_vector.cpp>
I've searched for this kind of container in Boost since I remember that someone proposed it some time ago but didn't find it anywhere. Is it released somewhere? Maby as a part of some library?
If not, would you be so kind and see if my solution should work for any/most popular compiler/platform? I've tested it only on clang.
To be specific, won't there be any problems with the memory aligmnent if I use this code for storage:
boost::aligned_storage<sizeof(**Value) * Capacity> m_storage;
this for access:
*(reinterpret_cast<Value*>(m_**storage.address()) + i);
and this for construction
new (reinterpret_cast<Value*>(m_**storage.address()) + i) Value(value);
Regards, Adam
______________________________**_________________ Unsubscribe & other changes: http://lists.boost.org/** mailman/listinfo.cgi/boost<http://lists.boost.org/mailman/listinfo.cgi/boost>