例如
template<class D, Function>
struct A
{
void foo()
{
D d;
int i = Function(d);
// Here function can be a free function: int fun(D& d)
// or member function: int D::fun()
// or function object:
}
};
如何设置模板参数来灵活选择不同类型的函数?可以更改代码只是允许灵 active 很好。谢谢
最佳答案
最好将函数传递到类中。如果你不传递一些对象,你必须例如默认构造这样一个对象来调用:
template<class D, typename Function>
struct A
{
explicit A(Function f) : func_(f) { }
void foo()
{
D d;
int i = func_(d);
// Here function can be a free function: int fun(D& d)
// or member function: int D::fun()
// or function object:
}
Function func_;
};
由于可调用类型几乎总是无状态的或具有微小的内部状态,因此复制这些类型应该没有任何影响。
关于c++ - 如何设置模板参数,灵活选择不同种类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085723/