а что значит не получается?) в чем проявляется
короче imho 'не трогайте сырые указатели грязными руками' может там можно просто std::shared_ptr<int[]> и не мучаться с удалением и копированием?
только придётся расширять assert для каждой специализации?
std::reverse ?
а может прям так а? template <typename T> int foo() = delete;
при этом X - горизонталь и Y - вертикальная ось:?