|
Boost : |
From: Simon Buchan (simon_at_[hidden])
Date: 2005-09-26 01:36:48
David Abrahams wrote:
> Cromwell Enage <sponage_at_[hidden]> writes:
>
>
>>I remember a thread that ran for a while on this
>>topic, and I need to make sure I've wrapped my head
>>around it correctly.
>
>
> I think you're referring to Vesa Karvonen's Lazy MPL (not sure if
> that's what he called it).
>
>
>>Here are my takes on laziness:
>>
>><take id="point-1">
>>A metafunction returns lazily if it can be used
>>interchangeably with its return type.
>
>
> I don't think that's the right way to think about it; Vesa's laziness
> is not about how things are returned, but about the treatment of
> arguments. A valid lazy metafunction argument is one that has a
> nested ::type. In other words, all lazy metadata are MPL nullary
> metafunctions.
>
Is this 'lazyness' in the same sense as 'lazy evaluation'? In other
words, does it mean you could write an MPL function that generated the
entire list of Fibbonaci numbers by returning a (meta)function that
generates the numbers up to the point they are needed?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk