Boost logo

Boost Users :

From: Tarjei Knapstad (tarjeik_at_[hidden])
Date: 2003-06-02 09:30:27


On Fri, 2003-05-30 at 20:41, Jaakko Jarvi wrote:
> The current Boost::tuple implementation is limited to 10 arguments.
> As you pointed out, one can use cons lists directly to circumvent this
> limitation.

I've tried this now, and I couldn't get it quite right. Defining the
tuple is no problem of course, but it still only becomes a tuple of 10
types where the last type is a cons list, so get<> etc. fails. The cons
list doesn't fall in smoothly as I originally thought, but a
cons<cons<T,... thing is created during instantiation of
map_tuple_to_cons instead.

While waiting for something better to come along we've currently solved
the problem by making tuples of tuples increasing the possible number of
types to 100 (which is well beyond what we require ;-) )

> Tuples are now part of the C++ standard techical report,
> meaning that they are likely to be part of the next standard library
> revision. The interface of the std::tr1::tuples do not include
> the cons list part, as there are other viable implementation options for
> tuples. We have written (together with Joel Guzmann) a preprocessor based
> implementations of tuples, which will allow up to 50 (I think, or even
> more) element tuples. That implementation will find its way to boost in
> some schedule, hopefully to the next release. It'll likely coexist with
> the current implementation, at least for some time to come.
>
I'll be waiting :)

>
> > On Fri, 2003-05-30 at 14:08, Tarjei Knapstad wrote:
> > > I tried constructing a tuple with 12 types today without much luck.
> > I've
> > > read through the headers to see if there was any obvious way of
> > getting
> > > around the 10 limit but couldn't find one (I half expected to find
> > > something along the way of vectorxx<>, in MPL).
> > >
> > > Am I being stupid, or is there really no way of constructing a tuple
> > > with more than 10 elements?
> > >
> > It just occured to me that I can make the 10th template argument of
> > tuple a "cons" list in itself, but I find this a bit awkward, i.e.
> >
> > typedef cons<float, cons<int, cons<double, null_type> > > some_types;
> > typedef tuple<type1, type2, ..., some_types> large_tuple;
> >
> > Should tuple by default allow for more than 10 types? Or at least
> > provide macros ala Alexandrescu's typelist construction macros?
> >
> >

Thanks,

--
Tarjei

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