lorsqu'il est question de C++ avec constexpr, on parle des applications à la programmation embarquée.
Or je vois souvent des intitulés de formation C embarqué, mais je n'ai pas vu de formation C++ embarqué.
Avant d'en venir à constexpr dans la suite du fil, y'a-t-il un livre de C++ embarqué "pur", que vous pourriez conseiller , utilisant la carte Nucléo STM32 pour les illustrations ?
Le cours de C embarqué de OC utilise une carte Nuclé STM32.
Non, ce n'est pas spécifique a l'embarqué. Pas plus que n'importe quelle fonctionnalité du C++ qui permet d'optimiser. Et pas plus spécifique a l'embarqué que tous les autres domaines qui veulent des perfs.
Dit autrement, constexpr est aussi utile dans l'embarqueé que dans les autres domaines. Et les autres fonctionnalités du C++ sont aussi utile que constexpr dans l'embarqué.
encore dans le cadre de constexpr, j'au été amené à lire par curiosité, un morceau de code sur internet où on voyait un constructeur par défaut déclaré constexpr.
Est-ce que un constructeur par défaut déclaré constexpr signifie qu'une instance créé à partir de ce constructeur par défaut, sera automatiquement constexpr ?
même si on a fait :
T a;
Est-ce que dans ce cas particulier l'objet a sera constexpr ?
Merci
- Edité par pseudo-simple 7 février 2019 à 16:19:17
En effet. Il parle d'objet pour parler des variables qui sont constexpr. Détail sémantique. (La différence entre "variable" et "object" est un peu subtile et "object" ne doit pas être pris au sens de la POO. D'ailleurs, il utilise "int" dans son example).
Le texte en question :
But let’s begin with constexpr objects. Such objects are,
in fact, const, and they do,
in fact, have values that are known at compile time.(Technically, their values are
determined during translation, and translation consists
not just of compilation but
also of linking. Unless you write compilers or linkers for
C++, however, this has no
effect on you, so you can blithely program as if the
values of constexpr objects were
determined during compilation.)
Pour en revenir a la question...
YES, man a écrit:
Est-ce que un constructeur par défaut déclaré constexpr signifie qu'une instance créé à partir de ce constructeur par défaut, sera automatiquement constexpr ?
même si on a fait :
T a;
Est-ce que dans ce cas particulier l'objet a sera constexpr ?
Tu sais (ou tu devrais savoir) écrire une classe avec un constructeur par défaut constexpr. Tu sais écrire une variable qui n'est pas constexpr.
Du coup, en quoi tu as besoin de nous pour cette question ? Ecris des codes de test et tu verras. C'est un code qui prend 10 lignes.
@ads00 : merci pour votre aide. Je n'avais pas idée comment faire et vous avez débloqué la situation. Et grâce à votre message, j'ai été amené à passer l'option -std=c++17 pour activer ce standard sur codebloks.
Si je comprends bien, dès que le constructeur est déclaré constexpr, alors l'objet est automatiquement constexrp même si les autres membres de la classe de sont pas constexpr ?
puisque le code n'accepte pas la seconde déclaration pour :
zeta z;
?
@Ads00 : Je suis de bonne volonté, donc n'hésitez pas à écrire le code "à place des gens" quand ceux-ci sont bloqués et qu'ils n'ont pas l'idée pour le faire. Sans cela, je serais resté sans réponse
- Edité par pseudo-simple 8 février 2019 à 5:47:42
puisque le code n'accepte pas la seconde déclaration pour :
zeta z;
?
@Ads00 : Je suis de bonne volonté, donc n'hésitez pas à écrire le code "à place des gens" quand ceux-ci sont bloqués et qu'ils n'ont pas l'idée pour le faire. Sans cela, je serais resté sans réponse
Le compilateur accepte sans aucun problème cette syntaxe. Et cette syntaxe est valide aussi en C++11 (excepté sur 1 détail, qui n'a aucune rapport avec constexpr)
Ca veut dire que tu n'as pas pris le temps de copier-coller ce code dans un éditeur et le compiler. Ou de lire les messages qui s'affichent et d'essayer de comprendre.
Arrêtes de dire que tu fais des recherches et que tu bosses, ça se voit que ce n'est pas le cas. Tu n'es pas de bonne volonté, tu es faignéant et tu attends qu'on fasse tout le boulot à ta place. C'est pour cela que tu poses autant de question.
Et c'est pour cela que tu ne comprends rien.
EDIT :
Et pour éviter que tu sortes encore des anneries en disant que je suis trop méchant et que tu as testé cette dernière syntaxe, voilà ce que dit un compilateur :
Aucune erreur !
Si tu avais réellement testé ce code, tu n'aurais pas poser cette question. Tu aurais peut etre posé d'aurtes questions et on t'aurais aidé, parce que tu aurais bossé par toi même. Mais la question que tu poses prouves que tu as rien fait.
Si je comprends bien, dès que le constructeur est déclaré constexpr, alors l'objet est automatiquement constexrp même si les autres membres de la classe de sont pas constexpr ?
Un constructeur constexpr permet de créer des instances constexpr, ça ne rend pas automatiquement les objets constexpr. Il suffit juste de faire les tests avec le code fourni par Ads00.
C'est bien beau de demander des codes tout fait, mais si même là vous ne prenez pas le temps de les essayer correctement, on va difficilement pouvoir continuer à vous aider. Les efforts sur un forum doivent marcher dans les deux sens.
C'est comme demander à un professeur particulier de faire ses devoirs à sa place. Est-il là pour ça ? Non, il doit simplement aider l'autre, pas tout faire à sa place. Est-ce votre encadrant de thèse qui a écrit le manuscrit à votre place ? Est-ce son but ? Et bien ici c'est pareil. J'espère que vous comprenez ça quand même.
Comment voulez-vous être embauché ensuite ? Si vos collègues doivent vous pré-mâcher le travail. Et c'est pas en avalant tous les bouquins de C++ de la terre que ça arrangera quelque chose, c'est un problème de méthode de travail.
× 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.
Discord NaN. Mon site.
Discord NaN. Mon site.
Discord NaN. Mon site.
Discord NaN. Mon site.
Regarde ce que dit le compilateur
Discord NaN. Mon site.
Discord NaN. Mon site.