Voila j'aimerais savoir comment ils comptent implémenter (si
ils l'implémententun jour :) ) export parce que si je ne me trompe le
code du template pourra être à ce moment compilé(un fichier obj ou
dans une lib,...) et ne sera plus mis dans les header comme on peut le
faire maintenant ...
Et sinon est-ce qu'ils n'ont pas envie de trouver une autre solution...
| Est-ce que export est prévu dans g++ dans un futur proche ?
futur proche, je ne sais pas. Est-ce que les développeurs y pensent ? Certainement oui.
| Et oui, autre question qu'est-ce qu'il manque à g++ pour être je dirais | complet ?
volonté politique, mais je crains que fr.comp.lang.c++ ne soit pas le bon forum pour en discuter.
-- Gaby
Jean-Marc Bourguet
Tux writes:
J'ai regardé un peu à travers le web et les newsgroup. Et bien j'ai toujours l'impression d'être dans le flou à propos d'export... Qu'est-ce que la norme impose ?
Comme pour tout, un comportement, pas directement une implementation.
Donc, que tu puisses mettre la definition dans une seule unite de compilation.
1) A-t-on une technique permettant d'optimiser le linkage ?
Comprend pas la question.
2) Est-ce que la "classe template" est compilée une fois et le code choisirait "dynamiquement" le code adapté, je m'exprime mal, mais je voudrais dire que si j'ai T = int et T a, b; a + b
ou bien T = UneClasseQuiSurchargelOpe+; a + b; Il choisirait dynamiquement le cas adapté
La semantique des templates en C++ est tres mal adaptee au partage des templates. Celui-ci sont quasiment imposes dans certains langages (Eiffel, Modula-3 entre autres), possible dans d'autres (Ada, au moins pour Ada83 il y avait des compilateurs qui permettaient de choisir avec un pragma; pour Ada 95 la norme est ecrite de maniere a laisser le choix mais il me semble qu'il n'y a aucun compilateur qui utilise le partage). C++ est a l'autre extreme, il impose quasiment le non partage.
Techniquement si on veut pouvoir charger dynamiquement des libraires il faudrait cela...
Si tu dire permettre de changer l'implementation d'un template en ne changeant qu'une bibliotheque dynamique compilee sans connaitre les instanciations possibles, effectivement C++ n'est pas directement adapte (mais si c'est necessaire, on peut le faire a la main, avec le template qui herite d'une classe non template ayant des virtuelles qui vont bien).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Tux <fa311356@skynet.be> writes:
J'ai regardé un peu à travers le web et les newsgroup. Et bien j'ai
toujours l'impression d'être dans le flou à propos
d'export... Qu'est-ce que la norme impose ?
Comme pour tout, un comportement, pas directement une implementation.
Donc, que tu puisses mettre la definition dans une seule unite de
compilation.
1) A-t-on une technique permettant d'optimiser le linkage ?
Comprend pas la question.
2) Est-ce que la "classe template" est compilée une fois et le code
choisirait "dynamiquement" le code adapté, je m'exprime mal, mais je
voudrais dire que si j'ai T = int et
T a, b;
a + b
ou bien
T = UneClasseQuiSurchargelOpe+;
a + b;
Il choisirait dynamiquement le cas adapté
La semantique des templates en C++ est tres mal adaptee au partage des
templates. Celui-ci sont quasiment imposes dans certains langages
(Eiffel, Modula-3 entre autres), possible dans d'autres (Ada, au moins
pour Ada83 il y avait des compilateurs qui permettaient de choisir
avec un pragma; pour Ada 95 la norme est ecrite de maniere a laisser
le choix mais il me semble qu'il n'y a aucun compilateur qui utilise
le partage). C++ est a l'autre extreme, il impose quasiment le non
partage.
Techniquement si on veut pouvoir charger dynamiquement des libraires
il faudrait cela...
Si tu dire permettre de changer l'implementation d'un template en ne
changeant qu'une bibliotheque dynamique compilee sans connaitre les
instanciations possibles, effectivement C++ n'est pas directement
adapte (mais si c'est necessaire, on peut le faire a la main, avec le
template qui herite d'une classe non template ayant des virtuelles qui
vont bien).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
J'ai regardé un peu à travers le web et les newsgroup. Et bien j'ai toujours l'impression d'être dans le flou à propos d'export... Qu'est-ce que la norme impose ?
Comme pour tout, un comportement, pas directement une implementation.
Donc, que tu puisses mettre la definition dans une seule unite de compilation.
1) A-t-on une technique permettant d'optimiser le linkage ?
Comprend pas la question.
2) Est-ce que la "classe template" est compilée une fois et le code choisirait "dynamiquement" le code adapté, je m'exprime mal, mais je voudrais dire que si j'ai T = int et T a, b; a + b
ou bien T = UneClasseQuiSurchargelOpe+; a + b; Il choisirait dynamiquement le cas adapté
La semantique des templates en C++ est tres mal adaptee au partage des templates. Celui-ci sont quasiment imposes dans certains langages (Eiffel, Modula-3 entre autres), possible dans d'autres (Ada, au moins pour Ada83 il y avait des compilateurs qui permettaient de choisir avec un pragma; pour Ada 95 la norme est ecrite de maniere a laisser le choix mais il me semble qu'il n'y a aucun compilateur qui utilise le partage). C++ est a l'autre extreme, il impose quasiment le non partage.
Techniquement si on veut pouvoir charger dynamiquement des libraires il faudrait cela...
Si tu dire permettre de changer l'implementation d'un template en ne changeant qu'une bibliotheque dynamique compilee sans connaitre les instanciations possibles, effectivement C++ n'est pas directement adapte (mais si c'est necessaire, on peut le faire a la main, avec le template qui herite d'une classe non template ayant des virtuelles qui vont bien).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Jean-Marc Bourguet
Gabriel Dos Reis writes:
Tux writes:
| Et bien j'ai toujours l'impression d'être dans le flou à propos | d'export ... Qu'est-ce que la norme impose ?
En général, la norme se garde d'imposer des détails d'implémentations. Tout ce qui est certain, c'est que l'instantiation des templates (que ce soit compilé séparément ou non) est *conceptuellement* « copie + substitution » et non « interprétation du même (byte)code » (comme c'est habituellement le cas des langages comme Standard ML ou OCaml qui ont eux aussi la généricité paramétrique). La différence entre les deux modèles se voient au niveau des adresses des entités.
Faire fonctionner les specialisations explicites avec un modele partage doit aussi poser quelques difficultes.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr> writes:
Tux <fa311356@skynet.be> writes:
| Et bien j'ai toujours l'impression d'être dans le flou à propos
| d'export ... Qu'est-ce que la norme impose ?
En général, la norme se garde d'imposer des détails
d'implémentations. Tout ce qui est certain, c'est que l'instantiation
des templates (que ce soit compilé séparément ou non) est
*conceptuellement* « copie + substitution » et non « interprétation du
même (byte)code » (comme c'est habituellement le cas des langages
comme Standard ML ou OCaml qui ont eux aussi la généricité paramétrique).
La différence entre les deux modèles se voient au niveau des adresses
des entités.
Faire fonctionner les specialisations explicites avec un modele
partage doit aussi poser quelques difficultes.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
| Et bien j'ai toujours l'impression d'être dans le flou à propos | d'export ... Qu'est-ce que la norme impose ?
En général, la norme se garde d'imposer des détails d'implémentations. Tout ce qui est certain, c'est que l'instantiation des templates (que ce soit compilé séparément ou non) est *conceptuellement* « copie + substitution » et non « interprétation du même (byte)code » (comme c'est habituellement le cas des langages comme Standard ML ou OCaml qui ont eux aussi la généricité paramétrique). La différence entre les deux modèles se voient au niveau des adresses des entités.
Faire fonctionner les specialisations explicites avec un modele partage doit aussi poser quelques difficultes.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Jean-Marc Bourguet
Gabriel Dos Reis writes:
"Christophe Lephay" writes:
| Gabriel Dos Reis wrote: [...]
| Une question au passage : de même qu'Omo lave plus blanc que | blanc, quelle forme prennent les messages d'erreur concernant les | templates, qui étaient déjà pour le moins absconds ?
ausi abscons que abscons :-)
Plus sérieusement, d'après mes expériences avec la version de EDG que j'ai, je n'ai pas noté une dégradation de la qualité des messages d'erreur...
D'apres mon experience, c'est exactement les memes (il y a bien quelques erreurs en plus qui sont detectees, mais les messages d'erreur ne sont pas plus abscons que d'habitude).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Gabriel Dos Reis <dosreis@cmla.ens-cachan.fr> writes:
| Une question au passage : de même qu'Omo lave plus blanc que
| blanc, quelle forme prennent les messages d'erreur concernant les
| templates, qui étaient déjà pour le moins absconds ?
ausi abscons que abscons :-)
Plus sérieusement, d'après mes expériences avec la version de EDG que
j'ai, je n'ai pas noté une dégradation de la qualité des messages
d'erreur...
D'apres mon experience, c'est exactement les memes (il y a bien
quelques erreurs en plus qui sont detectees, mais les messages
d'erreur ne sont pas plus abscons que d'habitude).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
| Une question au passage : de même qu'Omo lave plus blanc que | blanc, quelle forme prennent les messages d'erreur concernant les | templates, qui étaient déjà pour le moins absconds ?
ausi abscons que abscons :-)
Plus sérieusement, d'après mes expériences avec la version de EDG que j'ai, je n'ai pas noté une dégradation de la qualité des messages d'erreur...
D'apres mon experience, c'est exactement les memes (il y a bien quelques erreurs en plus qui sont detectees, mais les messages d'erreur ne sont pas plus abscons que d'habitude).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org