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).


Jaap Suter

Boost list run by bdawes at, gregod at, cpdaniel at, john at