Hi, Lately I find myself using boost::array intesively, specially in small demo programs. Sometimes, when "manually" accessing the elements I type a index out of range. The library can detect these errors once the program is running but I found this a waste, also I was surprised not to see this kind of static check not implemented in the library. So I wanted to see if I could enforce range checking at compile time, and I come out with this solution. namespace boost{ //sorry about the namespace name template<size_t IDX, typename T, size_t N> const T& get(boost::array<T, N> const& arr){ BOOST_STATIC_ASSERT(IDX<N); return arr[IDX]; } template<size_t IDX, typename T, size_t N> T& get(boost::array<T, N>& arr){ BOOST_STATIC_ASSERT(IDX<N); return arr[IDX]; } } #include<iostream> void main(){ boost::array<double, 3> a = {1,2,3}; std::clog<<boost::get<2>(a)<<std::endl; // ok, (namespace specification needed, why?) std::clog<<boost::get<5>(a)<<std::endl; //does not compile return 0; } (I though about using enable_if instead of BOOST_STATIC_ASSERT but that would be too much overengineering.) Is this implemented already in some other way? Alfredo