Boost logo

Boost :

From: Steven Watanabe (steven_at_[hidden])
Date: 2006-07-29 21:10:02


AMDG

    I am trying to create a library for type erasure(for boost if there
is enough interest). I would like to define some common operations
like arithmetic, I/O &c. For some of these I want to use Boost.Operators
to provide the other related operations. I am also, however, using
parametized
inheritance in order to allow several operations to be combined.
This for example is the definition of incrementable:

namespace erasures {
  struct incrementable : operation<incrementable> {
    template<class T>
    struct static_impl : implementation<void (T&)> {
      static void execute(T& t) { ++t; }
    };
    template<class Base>
    struct partial_interface :
      *boost::incrementable<typename Base::erasure_full_t, Base>* {
      typename Base::erasure_full_t& operator++() {
        erasures::call<erasures::incrementable>(*this);
        return(*erasures::full(this));
      }
    };
  };
}

Is use of base class chaining in this way part of the public API
of Boost.Operators? - Base may not be related to Boost.Operators
in any way. Or should I use multiple inheritance instead?

In Christ,
Steven Watanabe


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