Boost logo

Boost Users :

From: Robert Dailey (rcdailey_at_[hidden])
Date: 2008-03-26 15:35:50


On Wed, Mar 26, 2008 at 2:34 PM, Robert Dailey <rcdailey_at_[hidden]> wrote:
>
> It's good to know that mpl::vector can be configured, however the slow
> compilation time will require me to ensure that the mpl::vector remains in
> an implementation file as to not affect the compile time of other files (I'm
> assuming this is the solution).
>
> At this point I think the very last thing I need is to understand the
> inherit concepts. I'm still really confused about how they work. In both the
> doxygen documentation for inherit_linearly and in your examples, I do not
> see anyone explicitly filling in the '_' arguments. However, the boost
> examples use _1 and _2 which makes it even more confusing. I'll outline the
> very specific questions I have:
>
> 1) I've never used the _ placeholder, so I'm not really sure how it works.
> How is it different from _1, _2, etc. Right now I'm familiar with using
> Boost.Bind with the _1 concepts, how would _ be used in boost.bind (just
> as an example so I can see the differences).
>
> 2) What is the purpose in how mpl::inherit forms its classes? You say it
> does "class inherit : T1, T2", however I do not see the benefit in this.
>
> 3) I understand that mpl::inherit_linearly treats the second template
> parameter as a binary lambda as you explained, however I was expecting to
> see that we explicitly fill in the placeholders, and that's the part that's
> throwing me off. I don't see how the placeholders are being filled.
>
> 4) So mpl::inherit_linearly::type is the very base type in the inheritance
> chain? Does this allow us to access any type simply by performing up-casts?
> It looks like from the boost docs that the up-cast is performed by assigning
> the mpl::inherit_linearly::type directly to the type you want, is this
> correct?
>
> 5) Can you give an example of what this inheritance tree looks like
> generated by mpl::inherit_linearly?
>
> 6) Can you give me a small [pseudo]code example of what
> mpl::inherit_linearly does for each object in the list specified at the
> first template parameter? The way it internally works conceptually is
> unknown to me.
>
> 7) The explanation you provided (quoted below) makes no sense to me. Could
> you be so kind as to emphasize a little more? Keep in mind that I have no
> experience with std::accumulate.
>
> mpl::inherit_linearly treats the second argument as a binary lambda
> > expression.
> > It is very similar to the runtime std::accumulate. Think of inherit<_,
> > _> as
> > the MPL equivalent of a function object that returns inherit<T1, T2> for
> > arguments T1 and T2.
> >
>
> Again, thanks for your help and I'm sorry for being so slow. The MPL
> library has always proven to be frustrating for me to learn. I do appreciate
> you helping me out with it though. Perhaps my inexperience with MPL is why I
> have such a difficult time figuring out designs for some of these issues on
> my own.
>

I said doxygen in a few places in my previous post- replace those with
boost. Sorry, I just got done reading doxygen documentation when I wrote
that last post lol.



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