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 :
Ce code compile avec ma version de GCC 4.4.
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; }
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; }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 :
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&)
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à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 test t{{}, 0, 1};![]()
Partager