【发布时间】:2012-03-23 20:23:19
【问题描述】:
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 文件 (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): error C2903: 'result' : 符号既不是类模板也不是函数模板
c:\program 文件 (x86)\microsoft visual studio 10.0\vc\include\xxresult(28):错误 C2143:语法错误:缺少 ';'在'之前
还有更多...
【问题讨论】:
-
它使用 g++(4.6 和 4.8)编译。
-
@nabulke:即使在 C++11 中?我认为这应该可行..