$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Douglas Gregor (gregod_at_[hidden])
Date: 2002-08-01 14:47:49
On Thursday 01 August 2002 03:23 pm, Emily Winch wrote:
> Douglas Gregor wrote:
[snip me talking about big heterogenous containers]
> Hmmm. I think the application for these containers in Mike's paper might
> well require enough elements to make the memory used by the vast
> recursion depth of a cons-style list a serious consideration. But there
> still isn't much point debating it without concrete data about real life
> compiler problems, timing, and memory usage.
Maybe Mike has some data on this for us. They might have tried cons-style
lists.
> > Contrast this with the approach taken by Burton et al. using compile-time
> > vectors as heterogeneous value containers it's much easier to create a
> > 10,000-element heterogeneous value container, and nobody needs to extend
> > Boost.Tuples to 10,000 template parameters.
>
> If Boost.Tuple was PP'ified, nobody would need to do that.
<snickers as he considers the EDG preprocessor expanding 10,000 template
parameters>
> >>In any case, it's not the case that a requirement for a certain
> >>implementation of a heterogenous value container implies a requirement
> >>for a type container with the same implementation.
> >
> > Isn't that tantamount to saying that there is no reason to manipulate the
> > types of a heterogeneous container as a metaprogram? That says that we'd
> > never want to search for a particular type in a compile-time vector?
>
> I'm not quite sure how your conclusion follows from my premise. You
> don't need a typelist implementation _at all_ to search for a type in a
> compile-time vector.
I'll try to explain my interpretation. You said:
"In any case, it's not the case that a requirement for a certain
implementation of a heterogenous value container implies a requirement
or a type container with the same implementation."
To paraphrase: the need for a specific implementation of a heterogeneous value
container does not imply the need for a type container with the same
implementation. So, say we need the type vector that Burton et al. used for a
heterogeneous value container; why don't we need to access all of the types
in the container?
> // I have answered my own question, in actually trying to write this
> // out!
>
> // check that the remove_if did what we intended
> for_each<my_tuple>(print(std::cout)); // print the types
>
> // get on with the rest of the program
> for_each(my_tuple, print(std::cout)); // value algorithm
>
> Of course the compiler will do that all for us with no problem.
Good answer!
Doug