Pourriez-vous m'expliquer ce que je dois comprendre ?
Qu'à moins de nous dire "ce qui bugue, nous ne pourrons sans doute pas t'aider
Tu devrais pourtant avoir l'habitude, depuis tout le temps que tu participe au forum:
La première règle pour obtenir une aide efficace a toujours été "aides nous à t'aider".
Dans le cas présent, ce serait pas mal si tu pouvais nous dire "ce qui bugue", histoire que l'on ne doive pas s'amuser à copier / coller / compiler ton code
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
(@eugchriss en fait, l'operateur == de valarray retourne un tableau. valarray est un tableau tres particulier, puisque ses operateurs s'appliquent general sur chaque element du tableau. C'est une classe un peu... bref)
@yes man
Avec l'erreur, ca serait mieux.
J'ai testé ton code. En fait, operator == ne retourne pas un std::valarray<bool> a priori (j'ai testé gcc et clang), mais un type interne qui est convertible en valarray. Du coup, le type deduit par auto n'est pas utilisable directement avec begin/end.
Il faut ecrire le type explicite.
std::valarray<bool> y { d == e };
(Arretes d'utiliser les parentheses pour l'initialisation des variables)
pour comprendre comment j'aurais pu comprendre par moi-même que c'est un type interne, je vous mets un des morceaux de code vers lequel le compilateur renvoie :
Pouvez-vous m'aider à comprendre ce message ? Notamment le mot clé : constexpr et noexcept que je vois souvent passer. Pourriez-vous m'expliquer à quoi servent ceux deux mots-clés ?
Si je comprends, le type interne créé est un truc du genre "
initializer_list<_Tp> __ils" ?
Merci
- Edité par pseudo-simple 10 octobre 2018 à 8:02:18
Mais ce serait encore mieux que, au lieu d'aller voir un fichier de la bibliothèque standard vers lequel pointe l'erreur, tu apprenais à lire et à comprendre les erreurs que le compilateur émet (ou à nous le donner, dans le pire des cas):
Le compilateur n'est pas ton ennemi : bien au contraire! chaque fois qu'il ne comprend pas quelque chose, chaque fois que tu lui demande de faire quelque chose que les règles lui interdisent de faire, il essaye de t'expliquer ce qu'il ne comprend pas, ce qu'il ne peut pas faire au travers des erreurs qu'il émet.
Tu ne dois pas forcément t'intéresser à l'ensemble de l'expression template qu'il te donne (ni aux types qu'il a utilisé lors de l'évaluation de cette expression), mais tu dois toujours t'intéresser au sens général du message.
Avec un peu de pratique, tu te rendra compte qu'il te dit exactement tout ce que tu dois savoir
- Edité par koala01 10 octobre 2018 à 11:02:39
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
valarray et operator ==
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Eug
Discord NaN. Mon site.
Discord NaN. Mon site.