我在这种事情上很缺乏经验,但我试图创建一个模板函数来评估在“rotate”参数下的可变函数(参见下面的示例),并返回一个向量所有这些价值。C++ variadic模板参数迭代
例如为Ñ = 3与函数˚F(X,Y,Z)所返回的三重\载体应该是
< ˚F(X,0,0), ˚F(0,X,0),˚F(0,0,X)>
天真的版本我需要什么可能看起来像以下(不neces sary correct \ working)
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()'函数取值为一个向量。用值填充矢量,作为参数传递,变得微不足道。无需处理可变参数函数。 –
1)我没有问题,使'f'向量值我猜...虽然它可能是冗余'n'= 1时。 .... 2)“变得微不足道”并没有帮助... 特别是,我不确定它是如何帮助它在编译时完成的。 –