我有一个模板函数(查找最小值的通用函数),看起来像这样:
template<class T, class Func>
int findmin(const T* a, int n, Func less){
//...
}
和一个电话:
int smallest_matrix(const Matrix*a, int n){
return findmin(a,n,less_matrices);
}
其中less_marices是:
bool less_matrices(const Matrix& m1, const Matrix& m2){
//...
}
这是正确的语法吗?
我不应该用 operator () 定义一个函数对象,它将执行less_matrices所做的布尔检查,并且对findmin的调用不应该看起来像:
int smallest_matrix(const Matrix*a, int n){
minMatrixFunc f;
return findmin<Matrix, minMatrixFunc>(a,n,f);
}
其中minMatrixFunc是具有正确operator()的函数对象???