Thursday, August 23, 2007

One conversation from the Boost Mailing list contained a lot of the rationale behind both libraries. The basic design goals were the following, in order of importance:

  1. Cross-platform (this is Boost - it has to be)
  2. Concise, natural interface (no macros, etc.)
  3. Minimization of dependencies on other Boost libraries
  4. Separation of optional features of the library from the primary headers
  5. Performance
Number 3 was difficult, and we've decided to probably require inclusion of Boost.Preprocessor. Constructors or other functions with many arguments require a lot of template code that is much easier to just generate using Boost.Preprocessor. Boost.Function will probably be required as well.

For some of the original discussion on some of these design decisions, see the discussion that began with Mariano's interest in writing a plugin library for the Google Summer of Code:

No comments: