使用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): error C2903: ‘result’ : symbol is neither a class template nor a function templatec:\program files (x86)\microsoft visual studio
10.0\vc\include\xxresult(28): error C2143: syntax error : missing ‘;’ before ‘<‘
再加一些…
解决方法
在Visual C 10.0执行std :: ref中有一个错误或一组错误.
据报导,Visual C 11已被修复;看我的earlier question about it.
微软的STL回答说:“我们已经解决了这个问题,修复程序将在VC11 RTM中提供(但是,修复程序没有进入VC11 Beta版本).”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。