防止别名中的两个对象内部

cod*_*ave 6 c++ pointer-aliasing restrict-qualifier

我有一个与此类似的功能签名

void Mutliply(const MatrixMN& a, const MatrixMN& b, MatrixMN& out);
Run Code Online (Sandbox Code Playgroud)

矩阵类在内部有一个float* data;代表m x n组件的类.我想告诉编译器,a并且b不要对out矩阵进行别名,因此它不会执行大量的加载存储.

我该怎么做呢?我知道我可以传入指向函数签名的指针并用__restrict(在MSVC中)标记指针但是我想保留通过引用传递的对象的习惯用法,其中对象包含指向内存的指针.

我也知道这__restrict对象引用不起作用.

n. *_* m. 1

编写一个带有参数的非导出(文件static, private)乘法函数float*,用 标记参数restrict。调用Multiply此函数。