Thanks. That works, but it's really ugly.

Agreed.
 
 I don't understand why a slice of a multi_array(_ref) isn't simply a multi_array_ref. The current implementation seems to make dealing with slices unnecessarily complicated. The documentation on views is also very thin. Can anyone explain the rationale behind the design?

All I'm aware of is in this article:
 
@article{garcia2006multiarray,
    title = {{MultiArray: a C++ library for generic programming with arrays}},
    author = {Garcia, R. and Lumsdaine, A.},
    journal = {Software: Practice and Experience},
    year = {2005}
    volume = {35},
    number = {2},
    publisher = {John Wiley \& Sons, Ltd.},
}

which shows some inheritance diagrams that may explain what you're after, but I'm unsure if it will answer your question directly.

- Rhys