Bonjour à tous,

Je sais pas si je poste au bon endroit, dites moi si je dois déplacer le message. Voici mon problème: j'ai un bloc d'instructions qui peut lever un ensemble d'exceptions qui n'ont pas forcément de relation d'héritage que je souhaiterait catcher, un truc dans ce goût là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
struct exception1 : std::exception {};
struct exception2 : std::exception {};
struct exception3 : std::exception {};
 
void une_fonction()
{
    //... des instructions
 
    typedef vector<exception1, exception2> exception_pool_1;
    try {
        //.. des instructions pouvant lever des exceptions de type de exception_pool_1
    }
    catch(/*une ou plusieurs exceptions de exception_pool_1*/) {
        //rien ou un appel compilant pour tout type de pool_1    
    }
 
    //... des instructions
 
    typedef vector<exception1, exception3> exception_pool_2;
    //... des instructions
    try {
        //.. des instructions pouvant lever des exceptions de type de exception_pool_2
    }
    catch(/*une ou plusieurs exceptions de exception_pool_2*/) {
        //rien ou un appel compilant pour tout type de pool_2    
    }
}
Je ne sais pas si c'est possible de faire quelque chose avec boost, je suis tombé sur ce site qui parle en gros du même problème mais ils proposent une solution à base de macro. Dans cette discussion, un gars parle d'une solution à base de boost fusion, mais j'avoue ne pas du tout voir comment faire, si vous avez des idées...