
Boost : 
From: Andy Little (andy_at_[hidden])
Date: 20060725 03:39:09
Hi,
IMO the Integral Constant Concept is over specified in the mpl docs.
What is the rationale behind the next<..> and prior <..> requirements?
These seem to have little to do with an Integral Constant. Maybe they should
rather be another Concept , such as Iterable?
Where N is a model of Iterable:
next<N>::type
prior<N>::type
Currently for example, mpl::bool_ is stated to be a model of Integral Constant,
but it fails to meet the curently stated requirments, nor can it ever AFAICS.
Further the requirements currently include a member ::value_type.
According to the TMP book, this is a classic example of a traits blob. (section
2.2).
Surely access should be specified using value_type<C>::type?
IOW maybe a ValueType Concept.
Finally the runtime evaluation requirement could be removed and a refinement of
ValueType
such as RunTime Evaluable be stated in terms such as:
Where T is a type modelling Runtime Evaluable
value_type<T>::type = t();
For a type N The current Integral Constant spec would then, in those places
where these requirements are required:
N is a model of Iterable, Integral Constant and Runtime Evaluable.
This would allow me to meet the new Integral Constant requirements without
unneccesary baggage.
Further a bool_ could be correctly specified in terms of the above Concepts
regards
Andy Little
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk