列表的Remove_if谓词

时间:2010-07-28 08:19:33

标签: c++

当我使用模板函数谓词时,为什么这不起作用。

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);
}

1 个答案:

答案 0 :(得分:5)

您需要使用类型A实例化模板。所以你需要做l.remove_if(less_than_two<A>);