Как привести простой указатель к многомерному массиву фиксированного размера?

У меня есть функция, которая принимает указатель на массив с плавающей запятой. Основываясь на других условиях, я знаю, что указатель фактически указывает на матрицу 2x2 ИЛИ 3x3. (фактически память изначально была выделена как таковая, например, float M [2] [2]). Важно то, что я хочу сделать это определение в теле функции, а не в качестве аргумента функции.

void calcMatrix( int face, float * matrixReturnAsArray )
{
    // Here, I would much rather work in natural matrix notation
    if( is2x2 )
    {
        // ### cast matrixReturnAsArray to somethingAsMatrix[2][2]
        somethingAsMatrix[0][1] = 2.002;
        // etc..
    }
    else if(is3x3)
    { //etc...
    }

}

Я знаю, что мог бы использовать шаблоны и другие методы, чтобы лучше решить эту проблему. Мой вопрос на самом деле о том, как сделать такой акт в комментарии ###. Работаю в C ++.

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

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