Effacer des éléments spécifiques dans std :: map

Je veux effacer certains éléments de ma std::map.
J'ai écrit effacer + remove_if technique à laquelle j'ai toujours le faire avec d'autres conteneurs de séquence.
Mais il n'était pas à compiler avec la carte. Pourquoi?
Et Comment puis-je faire ce travail?

std::map<int, int> m;

bool foo(const std::pair<int, int>& p)
{
    return p.second > 15;
}

int _tmain(int argc, _TCHAR* argv[])
{
    m.insert(make_pair(0, 0));
    m.insert(make_pair(1, 10));
    m.insert(make_pair(2, 20));
    m.insert(make_pair(3, 30));

    m.erase(
        remove_if(m.begin(), m.end(), foo),
        m.end()); //compile error

    return 0;
}

source d'informationauteur Benjamin