Контейнер для boost :: multi_array того же типа, но с разной размерностью

Что мне нужно, это создать класс, который может содержать boost :: multi_array того же типа, но с разными размерами

Предположим, есть один или несколько таких массивов Double

boost::multi_array<double, 2> array_2d; //2D array
boost::multi_array<double, 3> array_3d; //4D array
boost::multi_array<double, 4> array_4d; //5D array
etc...

мне нужен контейнерный класс, который может содержать все вышеперечисленные типы, способные при необходимости использовать правильный тип позже

что-то вроде

GenericArray<double> arr;
arr.IsEmpty() // check if it has valid ref
arr.assign(array_2d); //set reference to

затем вернуть ссылку на массив, используя какую-то логику шаблона

try{
    boost::multi_array<double, 2>& array_2d_ref = arr.get<2>
    //OR
    boost::multi_array<double, 2>& array_2d_ref = arr.get<multi_array<double, 2>>
    // First one look cleaner tho
}catch (ArrayDimentinalityMismatch e){

}

В том же блоке кода

arr.assign(array_3d);

try{
    boost::multi_array<double, 2>& array_3d_ref=arr.get<multi_array<double, 3>>
}catch (ArrayDimentinalityMismatch e){

}

Возможно ли это с помощью шаблонов?

Ответы на вопрос(1)

Ваш ответ на вопрос