我正在嘗試使用boost :: fusion :: vector。但是,我遇到了這個非常簡單的問題。apply boost :: fusion :: for_each boost :: fusion :: vector with mutable function object
#include <iostream>
#include <string>
#include <boost/fusion/container/vector.hpp>
#include <boost/fusion/algorithm.hpp>
using namespace std;
struct A{
template <class T>
void operator()(const T& t) {
x++;
cout << t << endl;
}
int x = 0;
};
int main(){
A a;
boost::fusion::vector<int, int, int> tuple{3,4,5};
boost::fusion::for_each(tuple, a);
}
注意的struct A
的operator()
修改了struct A
x
。 gcc 4.7.2警告...... \ include \ boost \ fusion \ algorithm \ iteration \ detail \ for_each.hpp:77:error:將'const A'作爲'void'傳遞給'void A :: operator() (const T &)[with T = int]'丟棄限定符[-fpermissive]
有沒有解決方案?
感謝。其實,問題是關於迭代元組並應用可以修改的函數對象。從你的回答中,我想我不能使用boost :: fusion來達到這個目的。我對嗎? – Sungmin 2013-02-27 05:25:55
@Sungmin:解決方法是可能的,檢查出更新 – 2013-02-27 07:37:21
感謝您的幫助:) – Sungmin 2013-02-27 08:06:24