当我使用模板函数谓词时,为什么这不起作用。
class A
{
int x;
public:
A(int X):x(X){}
int getX() const {return x;}
};
template <typename T>
bool less_than_two(T const &a)
{
return (a.getX()<2);
}
int main()
{
list <A> l;
for (int i = 0; i < 5; i++)
l.push_back(i);
l.remove_if(less_than_two);
}
答案 0 :(得分:5)
您需要使用类型A
实例化模板。所以你需要做l.remove_if(less_than_two<A>);