Boost logo

Boost :

From: Douglas Gregor (gregod_at_[hidden])
Date: 2001-08-29 11:51:16


On Wednesday 29 August 2001 09:42, you wrote:
> --- In boost_at_y..., Douglas Gregor <gregod_at_c...> wrote:
> > One problem with such an approach is that it can very quickly become
> > unwieldy.
>
> Do you want to say it makes no sense to make a static assert,
> or do you want to say it makes no sense to make the algorithm
> working for all Euclidian rings?

Neither :).

It makes sense to make the algorithm work at its natural level of
abstraction. If a Euclidean ring is the algebraic structure on which the
algorithm is defined, then it should work for all Euclidean rings.

Additionally, I think it does make sense to use a static assert in this case,
especially because a Euclidean ring is a sufficiently rich algebraic
structure that not all algebraic types conform to.

What I'm saying is that the

::boost::extensible_traits<is_euclidian_ring_tag, T>::value

approach can get very unweildy. If I have a type Foo that models a Euclidean
ring, I don't want to specialize extensible traits for the tags:
euclidean_ring_tag
ring_tag
semiring_tag
abelian_group_tag
group_tag
abelian_monoid_tag
monoid_tag

etc.

        Doug


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk