= Origin C++ 0x Libraries = The Origin C++0x Libraries are a collection of generic libraries written in C++0x. The purpose of these libraries is to provide a framework for experimenting with generic programming and library design using the emerging C++0x language features. == Organization == The Origin C++0x Libraries define a layered architecture with the following core components and structure. Note that the layering is based on dependencies between libraries. It does not denote interface boundaries (i.e., Containers use elements from Core as much as the MPL and Traits libraries). +-------------------------+ | Algorithms | Containers | |-------------------------| Standard Libraries | Iterators | Functions | |-------------------------| <=====> | Concepts | |-------------------------| Core Libraries | Traits | +-------------------------+ | Core | Meta | +-------------------------+ === Origin.Meta === The Metaprogramming Library establishes a foundation and core components of template metaprogramming. Metaprogramming is pervasive in the Origin C++0x libraries. === Origin.Traits === The Traits library provides a foundation for reasoning about types, their structure, and their operations. Note that every domain has its own set of traits. The metafunctions here incorporate and expand upon the body of traits in the C++ Standard Library. === Origin.Core === The Core library defines a number of configuration and utility components. NOTE: This currently just includes a couple of trivial utility classes such as none and compressed. What else would legitimately go here? === Origin.Concepts === The Concepts library provides features for defining concepts and constraining templates. === Origin.Iterators === Concepts and utilities related to the definition and use of iterators. === Origin.Functions === Concepts and utilities related to the definition and use of functors. This library currently includes traits and utilities for functors or function objects, but will ultimately contain function wrappers (i.e., Boost.Function) as well. === Origin.Algorithms === Generic algorithms on iterators and ranges. This includes constrained versions of the standard algorithms found in C++ Standard Library, and other extensions. === Origin.Containers === Concepts and utilities related to the definition and use of containers. == Current Status == Currently, the only libraries implemented (and mostly tested) are the Core libraries. The Standard libraries are not yet finished - primarily due to the fact that there are some substantial design decisions that we have not yet made regarding those libraries (e.g., the nature of iteators, the use of ranges, etc).