template<class Network> void accept( Network const& n ) const { static const std::size_t count = boost::mpl::size<typename Network::nodes_type>::value; typedef boost::fusion::vector2< typename Network::data_type , boost::array<bool,count> > data_type; data_type data; boost::fusion::at_c<1>(data).fill(true); next_ = &(boost::fusion::at_c<1>(data)[0]); last_ = &(boost::fusion::at_c<1>(data)[count-1]); do { n.accept(*this,data); } while( next_ != last_ ); }