У меня есть сигнатура функции, похожая на эту
void Mutliply(const MatrixMN& a, const MatrixMN& b, MatrixMN& out);
. Внутри матричный класс имеет float * data;
, который представляет компоненты m x n
. Я хотел бы сказать компилятору, что a
и b
не являются псевдонимом для выходной матрицы, поэтому он не выполняет тонну загрузок.
Как мне пойти. об этом? Я знаю, что могу передать указатели на сигнатуру функции и пометить указатели с помощью __ restrict
(в MSVC)но я хотел бы сохранить идиому объекта, переданного по ссылке, где объект содержит указатели на память.
Я также знаю, что __ restrict
не работает со ссылками на объекты.