Something else I noticed:

array_type::array_view<3>::
type row_2 = a_3d_array[ boost::indices[range(0, z_dim)][range(1,1)][range(0,0)] ];

was perfectly acceptable from a boost::multi_array ... why?  dimensions of zero thickness should not be allowed.  That is the ranges range(1,1) and range(0,0) should not be allowed imho.  Of course if I can enter the zeroth dimenson of infintesmal thickness then all would be good.