|
Boost Users : |
From: Peng Yu (pengyu.ut_at_[hidden])
Date: 2008-08-24 12:37:57
Hi,
I want to do accumulation on boost::fusion::vector. Please refer to
the comment in the code. Can somebody let me know how to do it?
Thanks,
Peng
#include <boost/fusion/sequence.hpp>
#include <boost/fusion/include/at.hpp>
#include <boost/fusion/container.hpp>
#include <boost/fusion/iterator.hpp>
#include <boost/typeof/typeof.hpp>
#include <iostream>
struct A {
A(int value) : _value(value) { }
int _value;
};
struct B {
B(int value) : _value(value) { }
int _value;
};
struct C {
C(int value) : _value(value) { }
int _value;
};
template <typename T>
int get_it(const T &t) {
return t._value;
}
int main() {
BOOST_AUTO(v, boost::fusion::make_vector(A(0), B(1), C(3), B(8), C(7)));
// I want to make the following code more generic, the fusion vector
length could be anything.
// It sum over all the vector elements.
int sum = get_it(boost::fusion::at_c<0>(v))
+ get_it(boost::fusion::at_c<1>(v))
+ get_it(boost::fusion::at_c<2>(v))
+ get_it(boost::fusion::at_c<3>(v))
+ get_it(boost::fusion::at_c<4>(v));
std::cout << sum << std::endl;
}
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net