[Containers Review Result] Boost.Containers is accepted into Boost.

This is to announce that the Containers library by Ion Gaztanaga has been accepted into Boost. There were 11 positive reviews and one negative, many making the same points (see summary below). Acceptance is therefore conditional on Ion improving the documentation as the reviewers requested. Review comments summary: ~~~~~~~~~~~~~~~~~~~~~~~~ * Needs a better introduction/overview/tutorial in the docs: # what are stateful allocators, what's currently supported in this area, how is it supported, does it have performance implications. # Needs overview of the new containers - stable_vector, flat_* etc. # Needs description of recursive containers and why this library supports them but not C++03 containers. # Needs to justify why this library and not the std one (probably by mention of the above). * Make clear in the docs (if not already) what the default allocator is. * Make allocator template parameter name consistent. * Add basic_string::shrink_to_fit member function (from C++11). * Typo in range insertion docs (first/last vs i/j) * vector<bool> behavior needs to be documented (and justified either which way). * Need to document conformance to C++0x container requirements, plus use (or not) of new C++0x features such as std::allocator_traits. * Missing documentation for some deque member functions. * Missing Returns/Effects,Complexity or Throws. (ex: after No.23 in basic_string) * The "Acknowledgements" page is currently empty. There are various (c) notices in the source referring to sources from which parts of the code may have come. This page should clarify these sources, including any cases where the original code has now all been replaced, and assert that the licenses are all in order. It should also point out the history of the code in Boost, i.e. that parts were previously in Boost.Interprocess, so that anyone with previous exposure to the Interprocess containers is not confused. * There are some comments that the organisation of the docs makes it unnecessarily hard to jump directly to the info you want. Requests for additional features: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Consider implementing std::forward_list from C++0x. * Consider Boost.Range interoperability and/or range insert support. * Make the flat_* containers container adapters - so that a) the user can choose the underlying implementation and b) they can shoot themselves in the foot if they want to by manipulating the underlying container (mostly for efficient loading of data). Alternatively, provide some other interface enhancements to try to meet most of the use cases given. * Efficient construction of ordered containers from already sorted data. * Investigate Clang's Libc++ std lib performance tests. John Maddock Containers review manager. PS: Ion: if you need any help with quickbook/docbook and AutoIndex ping me and I'll see what I can do to help - there are all sorts of parameters that can be used to tweak the appearance etc.

El 22/08/2011 18:09, John Maddock escribió:
This is to announce that the Containers library by Ion Gaztanaga has been accepted into Boost.
There were 11 positive reviews and one negative, many making the same points (see summary below). Acceptance is therefore conditional on Ion improving the documentation as the reviewers requested.
Thanks to all reviewers and participants, I'll try to fix documentation ASAP so that we can push Containers shorty into the trunk branch. I'm open to suggestions, I hope we can experiment a bit with new containers and new useful functions soon.
PS: Ion: if you need any help with quickbook/docbook and AutoIndex ping me and I'll see what I can do to help - there are all sorts of parameters that can be used to tweak the appearance etc.
I guess I'll need help, my Quickbook & Docbook expertise is next to zero. And thank you for your great review manager work. Best, ion

Hi Ion, I am happy for you that the container library was accepted. I was waiting for you to correct the bug described here more than 2 weeks ago : http://boost.2283326.n4.nabble.com/boost-containers-remarks-and-questions-tp... Unfortunatly, even today, today's sandbox version does not compile with the simple code example that I provided. As a consequence I couldn't test as much as I wanted your library. Anyway, could you consider fixing the bug before pushing to the trunk ? Best regards, Pierre Morcello -- View this message in context: http://boost.2283326.n4.nabble.com/Containers-Review-Result-Boost-Containers... Sent from the Boost - Dev mailing list archive at Nabble.com.

El 28/08/2011 21:40, Pierre Morcello escribió:
Hi Ion,
I was waiting for you to correct the bug described here more than 2 weeks ago : http://boost.2283326.n4.nabble.com/boost-containers-remarks-and-questions-tp... Anyway, could you consider fixing the bug before pushing to the trunk ?
The only pending change for release is exploring a bit AutoIndex to improve documentation, so I've already pushed the library to trunk to start testing different platforms and try to be in time for the next boost version deadline (September 5). Trunk version should support your example. Please try trunk code and let me know if you are happy. Best, Ion

Hi,
Pierre Morcello escribió: I was waiting for you to correct the bug Ion Gaztañaga wrote : Please try trunk code and let me know if you are happy.
1/ This works, you did it ! 2/ But I got another compilation error on almost the same case, if I use std::swap instead of defining swap : #include <boost/container/vector.hpp> class swapOnly2 { public: swapOnly2():i(0){} private: int i; swapOnly2(const swapOnly2&); swapOnly2& operator=(const swapOnly2&); }; namespace std { template <> void swap( swapOnly2& a, swapOnly2& b ) { std::swap(a.i, b.i); } } int main() { boost::container::vector< swapOnly2 > swapOnlys(3); return 0; } This does not compile. Is this the correct behaviour? Did I miss something? Best regards, Pierre Morcello -- View this message in context: http://boost.2283326.n4.nabble.com/Containers-Review-Result-Boost-Containers... Sent from the Boost - Dev mailing list archive at Nabble.com.

On Sun, Aug 28, 2011 at 3:06 PM, Pierre Morcello < pmorcell-cppfrance@yahoo.fr> wrote:
Hi,
Pierre Morcello escribió: I was waiting for you to correct the bug Ion Gaztañaga wrote : Please try trunk code and let me know if you are happy.
1/ This works, you did it ! 2/ But I got another compilation error on almost the same case, if I use std::swap instead of defining swap :
The standard way to extend swap to a UDT is to define a swap function in the same namespace as the UDT and findable via ADL. #include <boost/container/vector.hpp>
class swapOnly2 { public: swapOnly2():i(0){} private: int i; swapOnly2(const swapOnly2&); swapOnly2& operator=(const swapOnly2&); };
namespace std {
Opening up namespace std is undefined behavior, AFAIK.
template <> void swap( swapOnly2& a, swapOnly2& b ) { std::swap(a.i, b.i);
Aside from the aforementioned problem, how is this suppose to work with SwapOnly2::i having private access and no friend declarations? }
}
int main() { boost::container::vector< swapOnly2 > swapOnlys(3); return 0; } This does not compile. Is this the correct behaviour? Did I miss something?
Based on the above, I think so...? (on both accounts) - Jeff

The standard way to extend swap to a UDT is to define a swap function in
Jeffrey Lee Hellrung, Jr.-2 wrote : the same namespace as the UDT and findable via ADL. Thank you, I missed this way of doing it.
how is this suppose to work with SwapOnly2::i having private access and no friend declarations?
I completely messed up. Sorry. I wanted to simplify the real problem I got, and ended up writing erroneous code. My real problem is simply to use std::auto_ptr with boost container. Anyway, thank you for pointing out these errors, Best regards, Pierre Morcello -- View this message in context: http://boost.2283326.n4.nabble.com/Containers-Review-Result-Boost-Containers... Sent from the Boost - Dev mailing list archive at Nabble.com.
participants (4)
-
Ion Gaztañaga
-
Jeffrey Lee Hellrung, Jr.
-
John Maddock
-
Pierre Morcello