我想使用Boost :: bind和std :: copy打印列表中的值。顯然,我可以使用循環,爲了清晰起見,我可能會這樣做,但我仍然想知道我在這裏做錯了什麼。Boost :: bind和std :: copy
這裏是我的代碼的精華版本:
#include <boost/bind.hpp>
#include <iterator>
#include <algorithm>
#include <list>
#include <iostream>
using namespace std;
using namespace boost;
int main(int argc, char **argv){
list<int> a;
a.push_back(1);
list< list<int> > a_list;
a_list.push_back(a);
ostream_iterator<int> int_output(cout,"\n");
for_each(a_list.begin(),a_list.end(),
bind(copy,
bind<list<int>::iterator>(&list<int>::begin,_1),
bind<list<int>::iterator>(&list<int>::end,_1),
ref(int_output)
) //compiler error at this line
);
return 0;
}
編譯器錯誤開始了
error: no matching function call to bind(<unresolved overloaded function type> .....
我認爲,這意味着綁定想不出什麼最外層綁定的返回類型應該是。我不責怪它,因爲我也做不到。有任何想法嗎?
我修正了iostream和錯誤。 – 2009-08-14 15:34:41
完美地工作。謝謝! – 2009-08-14 15:35:24