PolicyBasedClassDesign is the name of the first chapter in ModernCeePlusPlusDesign This is a technique of implementing design choices in CeePlusPlus. The design choices are said to be orthogonal if they can be implemented independently. If each policy is given a name, that name can define a minimal interface, and there can be several implementations which meet the needs of the policy. One of these can be chosen at compile time to provide alternative implementations. One example I have used goes as follows. I want to make use of pointers to objects within a C++ class. I decide that the interface for this will be Pointer_Class::Pointer_Type An implementation of this using BoostSharedPtr could be template class Boost_Pointer_Class { public: typedef boost::shared_ptr Pointer_Type; }; In the following, class Foo uses Boost_Pointer_Class as a default option. template class Pointer_Class = Boost_Pointer_Class> class Foo { typedef typename Pointer_Class::Pointer_Type ptr_t; }; Class Foo can be declared without reference to this policy as long as the default will do: Foo foo_int; One project which makes use of this is MetaAgent which is to be found at http://codeproject.com/useritems/metaagent.asp#__top By way of contrast, TheBoostGraphLibrary describes SetsOfRequirements which are ways of testing what a template type must do if it is to be put into a given class. JohnFletcher ---- CategoryCpp CategoryCppTemplates CategoryMetaprogramming