
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