Я пытаюсь использовать boost :: fusion :: vector. Однако у меня проблемы с очень простой проблемой.
#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);
}
Обратите внимание, что operator()
из struct A
изменяет x
в struct A
. gcc 4.7.2 предупреждает, что ... \ include \ boost \ fusion \ algorithm \ iteration \ detail \ for_each.hpp: 77: error: передача 'const A' в качестве аргумента 'this' для void A :: operator () ( const T &) [with T = int] 'отбрасывает квалификаторы [-fpermissive]
Есть ли решение для этого?