2012-07-04 118 views
0

爲什麼這個0的輸出是?在boost :: bind中傳遞引用vector :: bind

http://ideone.com/S7hgv

#include <boost/bind.hpp> 
#include <vector> 
#include <iostream> 

using namespace std; 

void f2(vector<int> &h) 
{ 
     h.clear(); 
     h.push_back(0); 
} 

void f1(vector<int> &h) 
{ 
     boost::bind(f2, boost::ref(h)); 
} 

int main() 
{ 
     vector<int> h; 
     f1(h); 

     cout << h.size() << "\n"; 
} 

我需要它是1,由於某種原因h不修改。

回答

4

boost/std::bind()只構造函數對象。您仍然需要調用它,以便執行任何代碼。

要獲得1輸出,與

boost::bind(f2, boost::ref(h))(); 
更換線

boost::bind(f2, boost::ref(h));