Como usar listas de tipos

Eu li sobre listas de tipos em 'Design moderno de C ++' e entendi como algum tipo de união para tipos. Colocando tipos diferentes e não relacionados em uma lista de tipos, pode-se usá-lo para representar mais de um tipo ao mesmo tempo, sem herança. Testei a lista de tipos em algumas funções simples com tipos primitivos, mas não consegui fazer com que nenhuma delas funcionass

Alguém poderia me dizer se minha lista de tipos de letra está certa e dar um exemplo simples do mundo real como usar listas de tipos no código médio diário? Desde já, obrigado

BTW, estou usando o Windows e o Visual Studio 2005 e seu compilado

EDIT: meus exemplos sumiram, eu uso um projeto sandbox no vs para testar essas coisas. Mas foi silencioso semelhante ao código no tutorial do Dobbs:

void SomeOperation(DocumentItem* p)
{
    if (TextArea* pTextArea = dynamic_cast<TextArea*>(p))
    {
        ... operate on a TextArea object ...
    }
    else if (VectorGraphics* pVectorGraphics =
        dynamic_cast<VectorGraphics*>(p))
    {
        ... operate on a VectorGraphics object ...
    }
    else if (Bitmap* pBitmap = dynamic_cast<Bitmap*>(p))
    {
        ... operate on a Bitmap object ...
    }
    else
    {
        throw "Unknown type passed";
    }
}

Isso funciona, mas não vejo a vantagem sobre a herança, capaz de fazer o mesmo. E o elenco dinâmico não funciona em tipos primitivos. É possível usá-lo como um valor de retorno como:

typedef Typelist<int, string> mylist
mylist myfunction() {
    if(foo == bar)
        return 5;

    return "five";
}

questionAnswers(4)

yourAnswerToTheQuestion