
[...] in contrary to std::vector, which is only required to support random-access iterators (which are implementation-defined), my class guaranties to allocate the data in one consecutive memory area. [...]
As of C++03, std::vector is contiguous, so I'm not convinced by the utility of this.
interesting ... it seems, my assumption was based on c++98
I don't think that was changed from 98 to 03. but your description reminded me of something I do think would be a useful addition to Boost.Array.
i cannot comment on c++03, since i don't have access to the iso specification, but for c++0x it seems to be the case. n2800 tells me the following: 23.2.6.1: The elements of a vector are stored contiguously, meaning that if v is a vector<T, Alloc> where T is some type other than bool, then it obeys the identity &v[n] == &v[0] + n for all 0 <= n < v.size(). in addition to that, 23.2.6.3 defines: pointer data(); const_pointer data() const; these two paragraphs would give me the guaranties, that i need for my application.
a vector that resides on the stack as long as it fits in there(like a boost::array) but still supports dynamic allocation in case the vector size exceeds the reserved space.
my implementation of this:
template<class T,std::size_t EmbeddedSize,bool Expand=true> class embedded_vector;
See also here for a lib in the review queue:
http://www.cs.aau.dk/~nesotto/boost/trunk/libs/auto_buffer/doc/html/index.ht...
interesting ... for EmbeddedSize==0 or StackBufferPolicy==boost::store_n_objects<0> both implementations would match the guaranties of my class ... cheers, tim -- tim@klingt.org http://tim.klingt.org Silence is only frightening to people who are compulsively verbalizing. William S. Burroughs