我有以下功能:
bool comp(Arm l, Arm r) {
return l.len < r.len;
}
请假设
Arm
是适当声明的结构。
我有以下课程:
template<typename T, typename F>
class Myclass {
public:
Arm v[10];
bool Myfunc(int i) {
int l = i, r = i + 1;
return F(v[l], v[s]);
}
};
创建对象时:
Myclass<Arm, decltype(comp)> obj;
我得到了
error: expression list treated as compound expression in functional cast [-fpermissive]
我尝试过传递地址,我尝试过创建函数指针并传递它。我希望它适用于 C++ 11,使用 C++17 我得到它的工作使用:
template<typename T, auto F>
class Myclass {
...
并通过以下方式创建对象:
Myclass<Arm, comp> obj;
这工作得很好。
您需要一个
F
的实例才能调用它:
template<typename T, typename F>
class Myclass {
public:
Arm v[10];
bool Myfunc(int i) {
int l = i, r = i + 1;
return F{}(v[l], v[s]);
// ^^
}
};