On Aug 4, 2005, at 3:51 AM, gast128 wrote:
me22
writes: On 03/08/05, gast128
wrote: Dear all,
I was wondering why boost::array did not offer compile time checked access
to
its contents, something like a.get<1>(), a similar interface like tuple. Otherwise I see not much enhancement compared to an ordinary std::vector.
Wkr, me
boost::array is allocated on the stack like a normal array, while a std::vector needs to use an allocator, usually putting it on the heap.
Also, the normal usage pattern for arrays ( dynamic or otherwise ) is looping through them, the accesses in which cannot be compile-time checked. Note, however, that operator[] does assert that the index is valid--which quickly caught me a bug a little while back.
- Scott McMurray
Yes I can see for myself that there are differences between boost::array and the vector. My point is only that one can add a compile time safe accessor to this array. This does not invalidate the need for a run time accessor like operator[]. Also this would create a big advantage over the vector. This heap and stack allocation stough could just be seen as implementation details.
Fwiw, the tuple interface has been added to std::tr1::array: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Section 6.2.2.5. -Howard