On Sun, Dec 15, 2019 at 3:53 PM Joaquin M López Muñoz via Boost < boost@lists.boost.org> wrote:
Candidate Boost.FixedString is ACCEPTED into Boost.
Thank you again for managing the review :) Here is what has been implemented thus far: 3. constexpr as much as possible, taking into account that, pre C++20,
this requires zero initialization of the data array.
Implemented, but tests need to be written
4. noexcept as much as possible and, in principle, at least as much as std::string.
Mostly implemented (some more complex conditional noexcepts need to be done)
5. Provide hash overloads. Up to the authors if they want to cover Boost.Hash as well.
Support for std::hash and Boost.Hash have been implemented
6. Determine the exact behavior on capacity overflow.
I think we will stick with exceptions, and add a macro that disables exceptions and instead makes them precondition violations
7. Make substr return a fixed_string rather than a view, and additionally provide a view-returning subview member function.
Implemented.
9 There are wrong "size() + m > max_size()" checks (they could overflow) in the code.
This has been addressed
13. Determine if fixed_string<0> should be specialized or not to make it more memory efficient.
This has been implemented, so feel free to play around with it
15. Optimize the type of the internal size data member when size_t is larger than necessary.
Implemented
16. BOOST_FIXED_STRING_USE_BOOST is unconditionally defined within the code.
This has been addressed. In addition to that, it has been renamed to BOOST_FIXED_STRING_STANDALONE
22. Store size (as capacity-size) in the last char of the data array, so as to save one memory byte.
This has been implemented, there will be a macro to enable/disable this.