【发布时间】:2011-06-09 02:18:27
【问题描述】:
我有一个类似的函数签名
void Mutliply(const MatrixMN& a, const MatrixMN& b, MatrixMN& out);
矩阵类内部有一个float* data;,代表m x n 组件。我想告诉编译器 a 和 b 不给输出矩阵加上别名,所以它不会做大量的加载存储。
我该怎么做呢?我知道我可以传入指向函数签名的指针并用__restrict(在MSVC中)标记指针,但我想保留通过引用传递的对象的习语,其中对象包含指向内存的指针。
我也知道__restrict 不适用于对象引用。
【问题讨论】:
-
我不认为将
__declspec(noalias)应用于函数具有您想要的语义? -
@ildjarn:可能是 - 我必须检查组件以确保
标签: c++ pointer-aliasing restrict-qualifier