我有這樣的一段簡單的代碼,使用的boost ::綁定:的Visual Studio 2010和boost ::綁定
#include <boost/bind.hpp>
#include <utility>
#include <vector>
#include <iterator>
#include <algorithm>
int main()
{
std::vector<int> a;
std::vector<std::pair<bool,int> > b;
a.push_back(1);
a.push_back(2);
a.push_back(3);
std::transform(a.begin(), a.end(), std::back_inserter(b),
boost::bind(std::make_pair<bool, int>, false, _1));
}
我得到一噸的錯誤在VS2010 RC,如:
Error 1 error C2780: 'boost::_bi::bind_t<_bi::dm_result<MT::* ,A1>::type,boost::_mfi::dm<M,T>,_bi::list_av_1<A1>::type> boost::bind(M T::* ,A1)' : expects 2 arguments - 3 provided c:\projects\testtuple\main.cpp 18
Error 2 error C2780: 'boost::_bi::bind_t<Rt2,boost::_mfi::cmf8<R,T,B1,B2,B3,B4,B5,B6,B7,B8>,_bi::list_av_9<A1,A2,A3,A4,A5,A6,A7,A8,A9>::type> boost::bind(boost::type<T>,R (__thiscall T::*)(B1,B2,B3,B4,B5,B6,B7,B8) const,A1,A2,A3,A4,A5,A6,A7,A8,A9)' : expects 11 arguments - 3 provided c:\projects\testtuple\main.cpp 18
我做錯了什麼?如果這是編譯器中的錯誤,我該如何解決它呢?
編輯:添加了整個測試用例。
說明:代碼在VS2008中編譯。
也許你在'std :: tr1 :: bind'和'boost :: bind'之間存在衝突,但是很難判斷你是否發佈了一個完整的示例 – Manuel 2010-02-19 11:54:14
也是爲什麼你認爲這個問題是由於由VC++ 2010中的一個錯誤,你是否試圖在不同的編譯器上編譯這段代碼? – Manuel 2010-02-19 11:57:07
請參閱我的編輯完整代碼。它在VS2008中編譯得很好。 – Zack 2010-02-19 12:03:30