All, I am trying to accomplish a compile time type registry by trying to register a specific subset of my classes into an mpl sequence type. So during compilation that sequence type should hold a sequence of my classes for subsequent processing (e.g. by mpl::for_each). An example: --- code start -------------- class Super { tyedef mpl::list<> SubTypesList; // usage of SubTypesList: printSubtypes() { mpl::for_each< SubTypesList >( ... )}; }; class A : public RegisterWith< A, Super > {}; class B : public RegisterWith< B, Super > {}; --- code end -------------- now Super::SubTypesList should be equivalent to mpl::list< A, B >. I have the feeling that this approach is not achievable with templates alone due to the C++ template mechanism not being able to redefine a type. Still I would be happy being proven wrong. Any pointers to similiar problems and solutions, alternative approaches (maybe using the boost_pp?) are welcome, too. Kind regards Thomas Lemm