I am pleased to announce the much anticipated (by me) release of a preliminary version of my interfaces library. The download page and online docs are here: http://www.kangaroologic.com/interfaces/ (For fun, click on "Online Documentation" and then on the Boost logo.) The library is an implementation of Christopher Diggins's proposal to add interfaces to C++, which was posted on comp.std.c++ early last year and later was described in the C/C++ User Journal. It provides a macro-based Interface Definition Language (IDL) which can be used to define C++ class types called interfaces. An interface is a lightweight value type associated with a set of named function signatures. An interface instance can be bound at runtime to any object which implements the interface, i.e., to any object of a type with accessible non-static member functions having the same name and signature as the set of functions associated with the interface. The functions of the bound object can then be invoked through the interface instance using the "dot" operator. Binding is completely non-intrusive: the object's type need not declare any virtual functions or derive from any particular base class. Current applications include: * Non-intrusive dynamic polymorphism - interfaces can often be used in place of abstract base classes, and are sometimes much faster. * Dynamic inheritance - allows function calls to be forwarded automatically to an object specified at runtime. * Smart Interface Pointers - smart pointers which can manage the lifetime of any object whose type implements a given interface. * Smart References - like smart interface pointers, but the managed object is accessed using the dot operator. * The Object Oriented Template Library, a project in the initial stages of development, by Christopher Diggins. Planned future applications include: * Runtime reflection - will allow an interface's functions to be enumerated and looked up by name at runtime * Aspect Oriented Programming as described in a August 2004 Dr. Dobb's Journal article by Christopher Diggins. Possible future applications include: * Integration with component architectures such as COM and CORBA. * Boost.Names - by abstracting the various uses of identifiers in C++ into preprocessor generated types called names, C++ classes and functions can be constructed in a straightforward manner using template metaprogramming. Best Regards, Jonathan