Boost logo

Boost :

From: Doug Gregor (gregod_at_[hidden])
Date: 2001-01-13 20:45:46

On Friday 12 January 2001 07:00, you wrote:
> Paris (U.E;), le 13/01/2001
> I would absolutely welcome algebraic classes!

These are algebraic concept classes, not general algebraic classes. The idea
behind them is that they can be used to determine algebraic properties of a
given type. For instance, given the following integer exponentiation
algorithm (borrowed from some class notes at

template<class SemigroupElement, class Integer>
exponentiate2(SemigroupElement x, Integer n) {
 while (even(n)) {
    x = x * x;
    n = n/2;
  SemigroupElement P=x;
  n = integral_part(n/2);
  while (n>0) {
   if (odd(n))
      P = P*x;
   n = integral_part(n/2);
  return P;

We should be checking that the type bound to SemigroupElement does indeed
form a semigroup with the operation *. The algebraic concept classes allow us
to do this check statically, so compilation will fail if the user does not
assert the associativity of * for the type bound to SemigroupElement.

        Doug Gregor

Boost list run by bdawes at, gregod at, cpdaniel at, john at