Je reçois une erreur étrange de Clang lors de la compilation de ce qui devrait être une simple ligne de code.Mauvais constructeur std :: vector
Ce code produit une erreur:
size_t s = 5;
std::vector<double> bestScores{s, -1.0};
J'essaie simplement d'utiliser constructor #2 pour remplir un nouveau vecteur avec cinq valeurs -1,0. L'erreur que je reçois est L'expression non constante ne peut pas être réduite du type 'type_taille' (alias 'unsigned long') à 'double' dans la liste d'initialisation.
Que se passe-t-il? Cela compile bien:
std::vector<double> bestScores{5, -1.0};
Est-il en train d'essayer d'utiliser le constructeur de la liste d'initialisation? Je pensais que vous aviez besoin de deux accolades pour que:
std::vector<double> bestScores{{5, -1.0}};
Vous n'avez pas besoin de deux accolades pour le constructeur de liste d'initialisation, à l'exception de 'std :: array' pour des raisons confuses et archaïques. –
@MooingDuck Cela doit avoir été ce à quoi je pensais. Merci –
Peut-être que vous devriez lire [C++ 11 - Uniform initialization] (http://en.wikipedia.org/wiki/C++11#Uniform_initialization), en particulier les deux derniers paragraphes. –