¿Cuál es la forma correcta de usar std::ref
? He intentado siguiente código en VS2010 y no compila:Cómo usar std :: ref?
#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;
}
Errores:
c: \ archivos de programa de Visual Studio (x86) \ Microsoft 10,0 \ VC \ include \ xxresult (28): error C2903: 'resultado': el símbolo no es una plantilla de clase ni una plantilla de función
c: \ archivos de programa (x86) \ microsoft visual studio 10.0 \ vc \ include \ xxresult (28): error C2143: error de sintaxis: falta ';' antes '<'
Plus un poco más ...
compila con g ++ (ambos 4.6 y 4.8). – kennytm
@nabulke: incluso en C++ 11? Pensé que esto debería funcionar ... – Asha