Bonjour à tous,

J'ai compilé GCC 4.4 qui offre dores et déjà la délicieuse fonctionnalité des listes d'initialisation.

Elle permet que faire de chouettes choses telles que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
struct test
{
    int i;
    int j;
};
 
int main(int argc, char **argv)
{
    test t{0, 1};
 
    return 0;
}
Ce code compile avec ma version de GCC 4.4.

Malheureusement, ça ne veut déjà plus compiler dans ce cas :
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
 
struct empty_class
{
};
 
struct test: public empty_class
{
    int i;
    int j;
};
 
int main(int argc, char **argv)
{
    test t{0, 1};
 
    return 0;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
no matching function for call to 'test::test(<brace-enclosed initializer list>)'
note: candidates are: test::test()
note:                 test::test(const test&)
J'imagine alors qu'empty class est un élément comme un autre à initialiser, mais cette naïve tentative de correction mène à la même erreur :
Je m'estimerais heureux d'avoir une réponse vu que peu de personnes doivent avoir de l'expérience dans la pratique du futur standard, alors merci d'avoir pris la peine de lire jusque là