让我说我有这个课程:
template <int n>
struct collection {
int data[n];
int sum() {
int s = 0;
for (int i = 0; i < n; i++) {
s += data[i];
}
return s;
}
};
作为性能优化,显然可以实现sum函数,如下所示:
int s = 0;
s += data[0]
...
s += data[n - 1]
return s
或者甚至
return data[0] + ... + data[n - 1];
因为n在编译期间是已知的,所以它可以取消循环。
这是自动完成的吗?或者我可以给编译器一些指令吗?还是impossibru?