Boost logo

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