Bonjour,
Le code suivant compile :
... alors que celui-ci ne compile pas (gcc 4.7 et clang 3.3 sont d'accord) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 struct test { int i, j; }; int main() { test t{0,1}; return 0; }
J'ai rencontré ce problème dans un cas où base ne contient vraiment aucune donnée et fonction membre, et ne sert qu'à fournir des typedefs et autres constantes de compilations. J'ai de nombreuses structures comme test, et j'aimerai bien éviter d'avoir à me farcir un constructeur trivial pour chacune d'entre elle... Autrement dit, je sais qu'une solution est d'ajouter test(int i_, int j_) : i(i_), j(j_) {} dans test, mais c'est pénible (à la fois à écrire et à maintenir).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 struct base {}; struct test : /* private */ base { int i, j; }; int main() { test t{0,1}; // erreur: aucun constructeur ne correspond // note: candidats possibles: // note: test() // note: test(const test&) // note: test(test&&) return 0; }
Connaissez-vous un moyen pour ré-activer l'initialisation uniforme dans ce cas là ?
Merci.
Partager