Ошибка происходит в test1, когда я пытаюсь вывести матрицу res. Смотрел по дебагу в Visual Studio, там ptr - указатель на двумерный массив - указывает на что-то непонятное, явно не то, что нужно. Я предполагаю, что ошибка в следующем: когда я вызываю operator-, то там создаю новый объект, который возвращаю по значению. Т.к. я возвращаю по значению, то деструктор же для него вызывается, а значит память по этому указателю очищается. И в итоге в test1 создается объект, в котором указатель на удаленные данные. Тогда остается лишь один вопрос, почему это нормально отрабатывает в других компиляторах