Erreur du compilateur C2076
Une liste d’initialiseurs entre accolades ne peut pas être utilisée dans une nouvelle expression dont le type contient « auto/decltype(auto) »
Si un auto
spécificateur de type apparaît dans la séquence de spécificateur d’un nouvel identificateur de type ou de l’identificateur de type d’une new
expression, l’expression doit contenir un initialiseur du formulaire ( assignment-expression )
. Le compilateur déduit l’identificateur de type de l’initialiseur assignment-expression
. Par exemple,
new auto(42); // new allocates int
auto c = new auto('a'); // c is of type char*, new allocates char
new (auto*)(static_cast<short*>(nullptr)); // allocates type short*
Pour résoudre ce problème, utilisez des parenthèses pour placer la valeur d’initialisation de l’expression new
.