Похоже, хорошая функция. Я не думаю, что Boost.MultiArray поддерживает это, но было бы неплохо запросить его на Boost ML.
Вместо использования диапазона, который генерирует index_range, мы могли бы подумать об определении перечисления переменной функции, которое дает диапазон (совмещенный домен) отображения для индекса
перечисление (1, 5, 35, 23) будет соответствовать (0,1,2,3)
Ваш взгляд может быть объявлен как
array_type :: index_gen indexices;
typedef boost :: multi_array_types :: index_enumeration_map enumeration;
// обратите внимание, что index_enumeration_map не является частью MultiArray
array_type :: array_view <1> :: type myview = A [indexes [enumeration (1, 5, 35, 23)];
Конечно, для управления индексами MultiArray потребуются некоторые изменения.