Boost logo

Boost Users :

Subject: [Boost-users] MPL: Lazy Evaluation and Nullary Metafunction
From: Missing Rainbow (d0253082_at_[hidden])
Date: 2008-10-16 15:56:37


Hi All,

I am reading about the lazy evaluation and nullary metafunction in the
MPL book. While discussing the lazy evaluation technique the
following code is presented (page 57):

struct add_pointer_f
{
    template <class T>
    struct apply : boost::add_pointer<T> {};
};
typedef mpl::vector<int, char*, double&> seq;
typedef mpl::transform<seq, boost::add_pointer<_> > calc_ptr_seq;

The point of the above code was to demonstrate that the nullary
metafunction calc_ptr_seq represents the sequence "int*, char**,
double&*", even though the last element in that sequence is not valid.
 Thanks to lazy evaluation. As long as we don't access the third
element in the sequence represented by calc_ptr_seq, everything should
work fine. Is my understanding correct?

Also, other than nullary metafunction, is there any other approach to
lazy evaluation? Or will lazy evaluation _always_ be implemented with
the help of nullary metafunction?

Thank you.

Rgds,
anna


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