Предотвращение сглаживания двух внутренних объектов

У меня есть сигнатура функции, похожая на эту

void Mutliply(const MatrixMN& a, const MatrixMN& b, MatrixMN& out);

. Внутри матричный класс имеет float * data; , который представляет компоненты m x n . Я хотел бы сказать компилятору, что a и b не являются псевдонимом для выходной матрицы, поэтому он не выполняет тонну загрузок.

Как мне пойти. об этом? Я знаю, что могу передать указатели на сигнатуру функции и пометить указатели с помощью __ restrict (в MSVC)но я хотел бы сохранить идиому объекта, переданного по ссылке, где объект содержит указатели на память.

Я также знаю, что __ restrict не работает со ссылками на объекты.

6
задан Mat 2 August 2012 в 18:20
поделиться