Boost logo

Boost :

From: Sergei Politov (spolitov_at_[hidden])
Date: 2008-07-10 03:47:38


Peng Yu <pengyu.ut <at> gmail.com> writes:

>
> The following program uses virtual functions. Essentially I need to go
[skip]
> }

  Am I correctly understand that you are looking for something link this:
===================================================
#include <iostream>

#include <boost/fusion/algorithm.hpp>
#include <boost/fusion/container.hpp>

struct square {
  void show_me() const {
    std::cout << "square";
  }
};

struct circle {
  void show_me() const {
    std::cout << "circle";
  }
};

struct triangle {
  void show_me() const {
    std::cout << "triangle";
  }
};

template<class T, class End>
void out_pair(const T &, const End &, const End &) {}

template<class T, class Begin, class End>
void out_pair(const T & t, const Begin & begin, const End & end)
{
    t.show_me();
    std::cout << " vs. ";
    deref(begin).show_me();
    std::cout << std::endl;
    out_pair(t, next(begin), end);
}

template<class End>
void out(const End &, const End &) {}

template<class Begin, class End>
void out(const Begin & begin, const End & end)
{
    out_pair(deref(begin), next(begin), end);
    out(next(begin), end);
}

int main()
{
    typedef boost::fusion::vector<square, circle, square, triangle> Vec;
    Vec v;
    out(begin(v), end(v));
}
===================================================

Best Regards,
  Sergei


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk