Cách chính xác để sử dụng std::ref
là gì? Tôi đã cố gắng sau mã trong VS2010 và nó không biên dịch:Làm thế nào để sử dụng 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;
}
Lỗi:
c: file \ program (x86) \ microsoft visual studio 10.0 \ vc \ bao gồm xxresult \ (28): lỗi C2903: 'result': biểu tượng không phải là mẫu lớp hay mẫu chức năng
c: \ program files (x86) \ microsoft visual studio 10.0 \ vc \ include \ xxresult (28): lỗi C2143: lỗi cú pháp: thiếu ';' trước khi '<'
Thêm một số chi tiết ...
Nó biên dịch với g ++ (cả 4.6 và 4.8). – kennytm
@nabulke: ngay cả trong C++ 11? Tôi nghĩ rằng điều này sẽ làm việc .. – Asha