mag*_*nta 2 c++ bind visual-studio-2010
为什么我的VS2010无法编译此代码:
#include <functional>
#include <vector>
int main()
{
std::vector<int> vec;
std::bind(&std::vector<int>::push_back, std::ref(vec), 1)();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您应该更具体地说明为什么这似乎不适合您.
#include <iostream>
#include <tr1/functional>
#include <vector>
int main(int argc, char* argv[]) {
std::vector<int> vec;
std::tr1::bind(&std::vector<int>::push_back, std::tr1::ref(vec), 1)();
std::cout << "vec.size = " << vec.size() << std::endl;
std::cout << "vec[0] = " << vec[0] << std::endl;
return 0;
}
$ gcc -o test -lstdc++ test.cpp && ./test
vec.size = 1
vec[0] = 1
Run Code Online (Sandbox Code Playgroud)
更新: Luc Danton是对的,这里的问题是超载push_back.请参阅问题VS2010是否存在boost :: bind问题?.另请注意,问题不仅限于push_back,请参阅Visual Studio 2010和boost :: bind.