Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2002-12-17 08:14:40


Roland Richter <roland_at_[hidden]> writes:

> David A. Greene wrote:
>
>> The fundamental problem is that it's inconvenient to iterate through a
>> tuple. All we have is the get<> template to access tuple elements.
>> Iterating is again conceptually simple -- just increment an index.
>> But the fact that get<> is a template implies the index must be a
>> compile-time constant, meaning we need a compile-time loop (or, if
>> you prefer, programmer-controlled loop unrolling) to iterate.
>
> Iteration through a tuple is indeed not so simple, but *recursion*
> is, and you can do that at runtime.
>
> All you need is to get the head and the tail out of a tuple, and,
> in turn construct a tuple out of head and tail. Boost.Tuple provides
> that: "get_head()" and "get_tail()", although it is not mentioned
> in the docs (why?).
>
> I'm not sure whether I completely understand what you need (did I?),
> but here is how I'd do it. Anyway, the idea of "iterating" through
> a tuple - and also the spanning_iterator thing - sounds interesting.

See also

http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/boost/boost/boost/python/detail/def_helper.hpp

which does some similar things, except with a compile-time criterion.

-- 
                       David Abrahams
   dave_at_[hidden] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

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