#include <iostream>
#include <algorithm>

template<typename T, size_t X, size_t Y>
void sort2(T(&arr)[X][Y])
{
	T *p = reinterpret_cast<T *>(&arr);
	std::sort(p, p + X*Y);
}

int main()
{
	int a[3][4] = { { 1,3,2,4 }, { 2,1,5,3 }, { 0,8,2,3 } };
	char b[2][5] = { { 'h','e','l','l','o' }, { 'w','o','r','l','d' }};

	sort2(a);

	for (size_t i = 0; i < 3; ++i)
	{
		for (size_t j = 0; j < 4; ++j)
			std::cout << a[i][j] << " ";
		std::cout << std::endl;
	}

	sort2(b);

	for (size_t i = 0; i < 2; ++i)
	{
		for (size_t j = 0; j < 5; ++j)
			std::cout << b[i][j] << " ";
		std::cout << std::endl;
	}
}