|
Boost : |
From: Jaap Suter (J.Suter_at_[hidden])
Date: 2002-07-24 04:47:25
Hello everybody,
just when I thought I've seen it all in C++, the MPL pops up. Typelists where cool and all, but the way you have created an STL-ish MPL that seperates algorithm and container is stunning to say the least. It's work like this that reminds me why I choose computer science over maths.
Anyway, enough praise, I have a few questions...
Is the current MPL release (July 17th) designed to work with MSVC 6.0 Service Pack 5? I've seen the test-matrix, and it seems it should work.
Does the code-generation facilities of MPL allow something like the following (pseudocode):
template< typename t_TypeList >
class Tree
{
// Constructor;
Tree( t_TypeList[ 0 ]* a_Child_0,
t_TypeList[ 0 ]* a_Child_1,
t_TypeList[ 0 ]* a_Child_2,
......
t_TypeList[ 0 ]* a_Child_n );
// Attributes;
t_TypeList[ 0 ]* m_Child_0;
t_TypeList[ 1 ]* m_Child_1;
t_TypeList[ 2 ]* m_Child_2;
........
t_TypeList[ n ]* m_Child_n;
}
Something of a brainstorm I tried was something like this (pseudocode)
template< typename t_TypeList >
class Tree : public Tree< tail< t_TypeList >
{
head< t_TypeList > m_Child;
}
// Recursion termination;
template<> class Tree< emptyList > {}
This may add all the children to the derived-most class, but there are two problems, there is no way to reach the child of a parent-class. Secondly, there is no way to write a constructor, taking all the children.
Mmmmm, seems the only way to do this is to explicitly writing out all the cases for n is 1 to 16 (16 should be enough for my purposes for a long time to come).
Sincerely,
Jaap Suter
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk