我定义下面的模板函数,该函数数组模板函数崩溃
template <typename X, typename Y, size_t n>
array <Y, n> lod (const function <Y (const X)> f, const array <X, n> w)
{
array <Y, n> l;
for (GLint i = 0; i = i + 1; i < n)
l [i] = f (w [i]);
return l;
}
为f的一个例子中的每个元素应用一个函数f,我定义一个函数“添加一个”
template <typename X>
function <X (const X)> ae (const X a)
{
return [a] (const X x)
{
return x + a;
};
}
然后我尝试将其应用
const array <ivec3, 12> oblad = {ivec3 (0, 2, 1), ivec3 (0, 3, 2), ivec3 (0, 1, 5), ivec3 (0, 5, 4),
ivec3 (1, 2, 6), ivec3 (1, 6, 5), ivec3 (2, 3, 7), ivec3 (2, 7, 6),
ivec3 (3, 0, 4), ivec3 (3, 4, 7), ivec3 (4, 5, 6), ivec3 (4, 6, 7)};
array <ivec3, 12> w = lod (ae (ivec3 (1)), oblad);
的程序编译就好了,但是在执行时崩溃。
从你身边路过阵列由值的事实
一旦'i'达到'n',你的循环写出数组的边界。你的意思可能是'for(GLint i = 0; i
这不是循环的工作方式。请参阅C++上的任何基础教科书。 –
投票关闭作为错字(搞乱for循环条件顺序) –