
On Mon, Nov 5, 2012 at 6:02 AM, Tobias Loew <Tobias.Loew@steag.com> wrote:
I used the "raw"-tag to quote the code. Here is it again without the tags:
... So, code like
boost::array<int,2> test; test[2] = 1; test[-1] = 1;
compiles without warnings or erros. Now, adding the following functions to array
template<size_type i> reference at() { BOOST_STATIC_ASSERT( (i < N) ); return elems[i]; }
template<size_type i> const_reference at() const { BOOST_STATIC_ASSERT( (i < N) ); return elems[i]; }
would make it possible to write
boost::array<int,2> test; test.at<2> = 1; test.at<-1> = 1;
which results in the expected error messages.
You can try to use boost::fusion::at_c<N>(test), but not sure if it actually has a static assertion. See http://www.boost.org/doc/libs/1_51_0/libs/fusion/doc/html/fusion/sequence/in... http://www.boost.org/doc/libs/1_51_0/libs/fusion/doc/html/fusion/adapted/boo... - Jeff