Owszem, jesteś w stanie zwrócić, ale jak koledzy pisali (ogólnie) sukces będzie miał krótkie nogi. Co ty z tym zrobisz to zależy od Ciebie. Ogólnie old-tablice (old od C), łatwo degradują się do wskaźnika i "tracą informację o wymiarach".
#include <iostream>
template <size_t size_x, size_t size_y>
auto inverse(float(&arr)[size_x][size_y]) -> decltype(arr)
{
return arr;
}
int main(){
float matrix2[][2]{
{2, 2},
{3, 4}
};
auto matrix = inverse(matrix2);
}
W C++ unikaj surowych tablic wielowymiarowych. W C jesteś zmuszony więc jest znanych wiele sposobów na ich obsługę i żaden nie jest idealny i powinien spełniać pewne założenia.
Naprawdę nie możesz użyć std::vector lub std::array albo tablicy wielowymiarowej zamapowanej na ciągłą przestrzeń pamięci?
W tym ostatnim przypadku przekazujesz tylko wskaźnik i dwa wymiary a naliczenie adresu następuje przy dostępie.