
And sometimes is less efficient. For instance, if you are populating from StaticVector from list iterators (or any non-random access iterators), it's an O(n) check ahead of time or a complicated wrapper around a one-at-a-time insert. (Note: this is a bug in the current implementation of StaticVector, as its iterator constructor currently requires random access iterators).
Thanks for finding the bug! I added it to my list.
I'd really like to see the interface be as close to C++11 std::vector as possible (other than vector<bool>).
This is definitely one of my goals. Perhaps it would be reasonable to add an unchecked_push_back like the one in AutoBuffer. That way, both those that want and do not want extra checks can be happy. I am trying to tackle one bug that I simply haven't been able to understand. My test program benchStaticVector calls a function that adds some random std::set<std::size_t> to a StaticVector, then returns it to a local variable and lets it go out of scope. It seems the destructor is being called on the return, but for some reason the copy isn't happening correctly. Then, when the local variable goes out of scope free gets called on uninitialized memory. Does anyone know what type of problem might be the cause of this? Perhaps I am missing some should-be-obvious function from my implementation? Thanks for all the great comments! Cheers! Andrew Hundt