5490

Le C++ aussi arrive pas mal à deviner les arguments du template oui
avatar

5491

avec g++ ? il me semblait pourtant devoir les spécifier bien souvent, mais ça fait un moment que je n'ai pas touché à du C++
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5492

le gros pbm des templates c'est que ça a été ajouté comme ça sans trop de reflexion (bon j'exagere, j'espere qu'il y en a eu) mais ça fait vraiment "grosse vérue" par dessus un langage deja un peu bancal.. sad
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5493

c'est tellement "pas réfléchi" et "un peu bancal" que les langages récents essaient tous de copier cette fonctionnalité, et c'est à l'inverse une sacrée bonne idée que de proposer une solution pour écrire aussi simplement du code générique hehe

(enfin t'as peut-être une meilleure idée pour faire la même chose, mais en tout cas la question entre templates ou rien ne se pose même pas)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5494

J'ai pas de meilleurs idée, c'est juste bordélique au possible, et des que tu tape dans un tel code sans avoir tout sous la main c'est absolument illisible, et même en ayant tout, si la doc laisse à désirer c'est limite in-maintenable...

J'ai eu entre les mains un gros projet plein de templates dans tout les sens, et ce mal documenté, et je peut te dire que sans les templates ça aurais été largement plus facile a prendre en main (c'était aussi en plus lié au fait qu'aucun IDE linux n'arrivais a charger tous les fichiers et générer les arbres de symboles & co, ça les faisait planter sick ça aide encore moins)

Et il y'a d'autres langages objets qui proposent des trucs similaires sans arriver a cette "toufositée" (hum mot inventé pour l'occaze grin) que sont les templates du C++, enfin bref je pense qu'il y aurais eu de moyens de faire mieux, c'est tout, enfin bref, j'ai pas très envie de débattre sur des choses sans trop d'intérêt autre que les goûts et les couleurs
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5495

bah le problème apparemment c'est que t'as été expose a du template écrit par des pourceaux... mais ca doit être pareil pour tout, non?
le template est quand même vachement utile pour la maintenance, y'a pas photo

5496

non le reste du code et l'embriquage etant "normal"
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5497

donc pour toi, vaut mieux écrire 3 fois quasiment la même chose plutôt que de factoriser ? on doit clairement pas avoir la même définition de maintenabilité ^^

Après si tu prends un exemple sur un truc codé par des porcs, ça sera pas tellement plus révélateur que n'importe quel langage avec ou sans template écrit par des porcs. C'est quoi les "trucs similaires" sinon ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5498

ya d'autre moyen pour factoriser que les templates
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5499

cf edit, tu as un exemple précis en tête ou tu penses que ça existe ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5500

Zeph> avec visual ça marche en tous cas, je sais pas pour les autres compilos :/
et std::min par exemple est un template quelque soit le compilo ? j'espère que t'as pas à préciser le type du template sous g++
avatar

5501

./5499 >
bha le principe n'est pas mauvais mais bon ça commence à devenir imbittable tel que ça a été fait sur le C++

Sinon par exemple en OCAML:
-polymorphisme qui permet de faire beaucoup de choses (tout ?) faisable avec les templates de manière bien plus belle
Genre au lieu de faire

template<class T> struct Complexe { T re; T img; };

on fait
type 'a complexe = { re:'a; img:'a }


Et comme le compilo est intelligent et le langage cohérent y'a beaucoup moins de trucs à faire à la main qu'en c++...
Et c'est géré normalement, les types variables sont (presque) des types comme les autres, pas besoin de faire des déclarations explicites bizardes, etc..
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

5502

Fab_ (./5474) :
il est déjà en couple

ben a vrai dire l'article parle des gens qui sont deja en couple... En tout cas ca marche pas pour ces conneries sad
avatar
納 豆パワー!
I becamed a natto!!!1!one!

5503

Godzil (./5498) :
ya d'autre moyen pour factoriser que les templates
Zephyr (./5499) :
cf edit, tu as un exemple précis en tête ou tu penses que ça existe ?

http://tigcc-linux.cvs.sourceforge.net/tigcc-linux/tigcc/ld-tigcc/manip.c?revision=1.10&view=markup
Cherche DefineFindItemAtPos. smile
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5504

mais bien sûr, v lire ta source de 2000 lignes smile

very > heu... on écrit 'a dans un cas ce qu'on écrit <class T> dans l'autre et la syntaxe reste exactement la même, c'est ça que tu considères comme une façon "bien plus belle" de faire ? pour moi c'est rigoureusement pareil...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5505

C'est plus facile a lire que le template C++ je trouve, si ce n'est que je trouve le (O)CAML assez moche comme syntaxe mais bon cheeky
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5506

C'est quoi un template ?

5507

En C++ un template c'est un modèle de code que tu peux instancier (c'est à dire que c'est à ce moment que ça va vraiment générer du code dans ton programme) suivant les paramètres que tu lui donnes. Le plus utile c'est que tu peux passer des types en paramètre

par exemple le template :
template<typename T> T min(T a, T b) { return a < b ? a : b; }
génèrera
int min(int a, int b) {return a < b ? a : b;}
si on l'appelle avec des ints :
int a, b;
int c = min(a, b);

Tu peux appeler ton template avec plusieurs types différents ça génèrera les fonctions pour chacun des types. C'est très puissant comme mécanisme, il y a beaucoup de templates dans la lib standard c++, comme des vecteurs qui peuvent donc contenir ce que tu veux
avatar

5508

C'est un bout de code générique, paramétré par un certain nombre de données (qui peuvent être des types ou des valeurs). L'exemple facile à comprendre qu'on donne souvent, c'est celui d'un template de liste, c'est à dire le code générique qui permet de gérer une liste d'éléments (ajout, suppression, recherche, etc).

En pratique, il suffit d'écrire le code générique de la liste une seule fois, puis ensuite on peut l'utiliser pour une liste d'entiers, une liste de chaines de caractères, une liste d'un objet de ton programme, etc...

(les templates sont très largement utilisés dans la bibliothèque standard du C++, la STL (pour Standard Template Library), qui fournit des piles génériques, des tables de hash génériques, toutes sortes de listes génériques, etc.

[edit] cross embarrassed
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5509

Ça sert plus ou moins à remplacer le typage dynamique qu'il y a en Objective C, non ? #n00b# Ou je n'ai rien compris ? triso
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

5510

c'est quoi le typage générique ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5511

very (./5501) :
Genre au lieu de faire

template<class T> struct Complexe { T re; T img; };

on fait
type 'a complexe = { re:'a; img:'a }


En fait non, ça c'est un type complètement générique, (on est pas obligé d'y mettre des objets (à moins que class T ne signifie pas qu'on ne peut y mettre que des objets)).
Pour forcer à mettre des objets en caml, on fait ça :
type 'a complexe = { re: (< .. > as 'a); img:'a } ;;

ou
type 'a complexe = { re: 'a; img:'a } constraint 'a = < .. >;;


(en gros, on force 'a à être le type d'un objet (ici, on ne force aucun prototype, donc n'exige aucune méthode, et on permet tout d'où le < .. >)).
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

5512

de mémoire, il me semble que <class T> est équivalent à <typename T>, et donc qu'on peut instancier même avec des POD (int, float & co), mais je peux me planter (c'est loin tout ça ^^)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5513

Oh, c'est bizarre alors, enfin, disons que j'ai rien dit grin.
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

5514

je viens de vérifier, c'est pas très intuitif mais c'est bien ça :
$ cat test.cc
#include <iostream>

template<class T>
class A
{
public:
  void print (const T& t) const
  {
    std::cout << t << std::endl;
  }
};

int main ()
{
  A<int> a;

  a.print (17);
}
$ g++ test.cc
$ ./a.out
17
$

(de toutes façons le "class" comme le "typename" ne sont là que pour désambiguïser la syntaxe, et pourraient d'ailleurs être complètement supprimés ici)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5515

Zephyr (./5504) :
mais bien sûr, v lire ta source de 2000 lignes smile

C'est si dur que ça de faire un Ctrl+F? roll

Extrait de ld-tigcc:
/* manip.c: Routines to manipulate the internal data

   Copyright (C) 2002-2004 Sebastian Reichelt
   Copyright (C) 2003-2007 Kevin Kofler

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
// Find the item preceding or following the given location. May return NULL. #define DefineFindItemAtPos(Type,Item,LocationSuffix) \ Type *Find##Item##AtPos (const SECTION *Section, OFFSET Location, BOOLEAN Following) \ { \      /* Find the place so that Item->Location is always less than Location */ \      /* and Next##Item->Location is always greater or equal. */ \      Type *Item = NULL, *Next##Item = NULL; \      if (Location > Section->Size >> 1) \      { \           Item = GetLast (Section->Item##s); \           while (Item && (Item->Location LocationSuffix >= Location)) \           { \                Next##Item = Item; \                Item = GetPrev (Item); \           } \      } \      else \      { \           Next##Item = GetFirst (Section->Item##s); \           while (Next##Item && (Next##Item->Location LocationSuffix < Location)) \           { \                Item = Next##Item; \                Next##Item = GetNext (Next##Item); \           } \      } \      /* If we are looking for something that follows, the case is clear. */ \      /* Otherwise, we need to check whether the next item is also OK. */ \      if (Following || (Next##Item && (Next##Item->Location LocationSuffix <= Location))) \           return Next##Item; \      else \           return Item; \ } DefineFindItemAtPos (SYMBOL,   Symbol,  ); DefineFindItemAtPos (RELOC,    Reloc,   ); DefineFindItemAtPos (ROM_CALL, ROMCall, ); DefineFindItemAtPos (RAM_CALL, RAMCall, ); DefineFindItemAtPos (LIB_CALL, LibCall, ); DefineFindItemAtPos (SEGMENT,  Segment, .Start->Location); #undef DefineFindItemAtPos
Licence: GPL version 2 ou GPL version 3.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5516

Zephyr (./5514) :
(de toutes façons le "class" comme le "typename" ne sont là que pour désambiguïser la syntaxe, et pourraient d'ailleurs être complètement supprimés ici)

Les versions actuelles de g++ vont te pondre des erreurs si tu ne le mets pas.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5517

aze (./6) :
et tu veux nous faire croire que tu ne racontes pas n'importe quoi ?

Appliquée à vous tous grin
avatar
Zut je suis reperé, vite ! L1+R1+L2+R2 !
Des ennemis ! ACTIVATING COMBAT MODE - MODULATING PHASE - POWER SURGE ! - CONFLICT RESOLVED
La longue liste des clichés de l'animé et du manga !
RAW ! RAW ! FIGHT THE POWER !

5518

Rusty> moi je l'ai jamais nié tongue
avatar

5519

5520

Y'en a marre de toutes ces jeunes filles qui se montrent dénudés sur 4chan, plus moyen de les éviter, je plussois Rintintin.