我想拥有一个代表整数的离散函数的类。函数的功能是模板参数。构造函数应接受此指针的功能(指向吗?)。我还希望能够将lambda表达式传递给构造函数。实际上,这是我要传递的主要功能。
此外,我想有一种方法eval()
来计算提供的参数的函数值。
问题是如何传递和存储函数以及如何对其求值。
template<int arity>
class DiscreteFun {
private:
FuncType f; // what should FuncType be?
public:
DiscreteFun(FuncType f): f(f) { };
int eval(const array<int,arity>& x) const {
// how to pass arguments so that it calculates f(x[0], x[1], ...)
}
};
答案 0 :(得分:3)
您可以为f
类型添加模板参数,然后eval
就是std::apply
。请注意,std::array
是一个类似元组的容器。
template<int arity, typename FuncType>
class DiscreteFun {
private:
FuncType f;
public:
DiscreteFun(FuncType f): f(f) { };
int eval(const array<int,arity>& x) const {
return std::apply(f, x);
}
};
template<int arity, typename FuncType>
DiscreteFun<arity, FuncType> makeDiscreteFun(FuncType&& f)
{
return { std::forward<FuncType>(f) };
}
答案 1 :(得分:2)
您可以使用Sub MacroNo(r As Range)
Range("L" & r.Row).Validation.Delete
Sheets("Data").Range("L" & r.Row).Resize(, 2).Value = "NA"
End Sub
和一些间接方式:
std::index_sequence