Как использовать std::ref?

Как правильно использовать std::ref? Я попробовал следующий код в VS2010, и он не компилируется:

#include <vector>
#include <algorithm>
#include <iostream>
#include <functional>
using namespace std;
struct IsEven
{
    bool operator()(int n) 
    {
        if(n % 2 == 0)
        {
            evens.push_back(n);
            return false;
        }

        return true;
    }

    vector<int> evens;
};
int main(int argc, char **argv)
{
    vector<int> v;
    for(int i = 0; i < 10; ++i)
    {
        v.push_back(i);
    }

    IsEven f;
    vector<int>::iterator newEnd = remove_if(v.begin(), v.end(), std::ref(f));
    return 0;
}

Ошибки:

c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): ошибка C2903: 'результат': символ не является ни шаблоном класса, ни шаблоном функции

c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): ошибка C2143: синтаксическая ошибка: отсутствует ';' перед '<'

Плюс еще...

10
задан Asha 6 March 2012 в 10:59
поделиться