我有一个类模板 Foo,它有几个成员,其中一个是 Bar 类型的函数 bar:
template<std::size_t N>
class Foo
{
...
Bar<N> bar;
...
};
我想Bar<2>
成为一个函数double (* )(double, double)
(或可能std::function<double(double, double)>
)的模板别名。同样,我想Bar<3>
成为一个函数double (* )(double, double, double)
(或可能std::function<double(double, double, double)>
)的模板别名。这意味着N
应该指定函数 bar 采用的双参数的数量。
我设法接近这种行为的唯一方法是使用模板别名
template <std::size_t N>
using Bar = double (* )(std::array<double, N>& eval);
但是,通过这种方式,我不能bar
以自然的方式调用该函数bar(x,y,z)
。
是否有可能获得我想要的行为?