使用循环模板属性的类是否可以展开这些循环?

时间:2016-06-16 14:07:19

标签: c++ visual-studio-2013

让我说我有这个课程:

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?

0 个答案:

没有答案