C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Re: decltype

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Gabriel Dos Reis
Guest





PostPosted: Fri Jun 27, 2003 7:02 pm    Post subject: Re: decltype Reply with quote



Julien Blanc <Julien.Blanc (AT) imag (DOT) fr> writes:

Quote:
J'ai l'impression que les habitues des langages fonctionnels
devineront assez bien ce que ca fait. Ce sera en tout cas loin dans ma
liste des choses qui ne font pas ce a quoi on s'attend, meme en
connaissant assez bien le langage.
C'est vrai qu'à côté de cdr et car, fun semble tout à fait intuitif.

fun n'est pas utilisé en CAML ??

Bien sûr.

-- Gaby

Back to top
Gabriel Dos Reis
Guest





PostPosted: Fri Jun 27, 2003 7:21 pm    Post subject: Re: decltype Reply with quote



Marc Boyer <Marc.Boyer (AT) enseeiht (DOT) yahoo.fr> writes:

Quote:
Gabriel Dos Reis wrote:
Marc Boyer <Marc.Boyer (AT) enseeiht (DOT) yahoo.fr> writes:
| Si ça passe, je serais très surpris. Je pensais pas que des
| concepts de typage automatique "à la caml" (pou citer le plus
| connu) passerait dans des langages aussi répandus que C++.

Pourquoi ? Et pourtant, tu en utilises déjà des rudiments dans le C++
actuel (déduction d'arguments templates et compagnie).

Il me semble (aprèciation personnelle, nullement fondée sur
une quelconque étude sociologique sérieuse) que les rudiments
actuels se rapportait à la famille des conversions implicites.

Et les déductions d'arguments de template ?

Quote:
| Après, par rapport à mon expérience (limitée) de Caml,
| plusieurs choses me gènent:
| - l'inférence de type caml est faite quand on écrit le code,
| sans avoir à l'instancier. Cela permet de vérifier de la
| cohérence avant toute instanciation.

L'inférence de type est optionelle.

Mais qui écrit une fonction générique un peu complexe
sans vérifier un coup que son type correspond bien
à ce à quoi il pensait ?

et si ce à quoi il pensait est que justement le type sera connu à
l'instantiation ?

template<typename Fun, typename T>
auto apply(Fun f, T t) { return f(t); }

Quote:
| - a cause du modele de genericité du C++ (ou l'on ne passe
| pas la signature des operateurs utilisés), on est incapable
| de deviner le type de retour des operateurs.

Dans la discussion actuelle, les returns multiples sont bannis.

auto function(auto x, auto y, bool b){
auto res; // Version 1

Invalide.


Quote:
decltype(x+y) res; // Version 2

Invalide.

Quote:
if (b)
res= x+y;
else
res= x< }

Et ce genre de chose aussi ?

Ce code est invalide puisque res n'est pas initialisé.

Quote:
Mais c'est mieux qu'une macro, en commançant pas les histoires de
portées.

Je ne te suis pas. Qu'est-ce qu'on gagne ?

La portée, et ce qui fait d'une fonction une fonction : les arguments
sont évalués une fois poru initialisé les paramètres.

Quote:

Ensuite, le but c'est juste de donner la possibilité de ne
pas avoir à se soucier du type. Il ne faut pas oublier que
l'annotation de type explicite est une *redondance*, il y a des cas où
c'est souhaitable et il y a des cas où cela ne l'est pas.

Disons que cela me semble une redondance de sécurité utile.

Mais la redondance peut être aussi source d'ennuis interminables.
Nombre de problèmes de langages comme C++ viennent du fait que le
programme veut répéter des informations que le compilateurs connait
mieux que lui.

Quote:
Un peu comme le const de certaines fonctions.

Là, je ne suis pas.

Quote:

| C'est à l'instanciation qu'on aura la surprise.

C'est différent des templates actuels ?
C'est typiquement C++ : la surprise est dans l'utilisation.

Mais est-on obligé de faire des extentions qui augmentent
encore les défauts courant ?

Mauvaise question. N'importe quel outil util peut être abusé d'une
manière ou d'une autre, donc augmente potentiellement les défauts
courants. Dans le cadre de C++, la question serait plutôt, les
bénéfices valent-ils le coût de la complexité ? Dépassent-ils les
potentiels défauts ?

Dans le cas actuel, il n'est pas encore clairement établi qu'on
augmente les défauts courants.

-- Gaby

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.