我在这方面经验不足,但我正在尝试创建一个模板函数,该函数在“旋转”参数处评估一个n变量函数(参见下面的示例),并返回所有这些值的向量。
例如,对于n=3且具有函数f(x,y,z),返回的三元组向量应为: < f(x,0,0), f(0,x,0), f(0,0,x) > 我需要的简单版本可能如下所示(不一定正确/有效)。
例如,对于n=3且具有函数f(x,y,z),返回的三元组向量应为: < f(x,0,0), f(0,x,0), f(0,0,x) > 我需要的简单版本可能如下所示(不一定正确/有效)。
typedef FunctionSignature Function;
template<class Function, size_t Dimensions>
std::array<Function::Out,Dimensions> F(Function::InComponent x)
{
std::array<Function::Out,Dimensions> Result;
for (i=0; i<Dimensions; i++)
Result[i] = Function::f("rotate((x,0,...,0),i)");
return Result;
}
但是如何制作 rotate
的功能?
我还希望能够消除运行时 for
,因为在编译时期已经知道了 n
。
f()
函数以显式值列表的形式作为参数,而是让你的f()
函数以值向量的形式作为参数。用值填充向量以作为参数传递变得非常简单。无需处理可变参数函数。 - Sam Varshavchik