Voici la suite (le n° 6) de la série des tutoriels sur le C++ Expressif : C++ Expressif - La composition de fonctions.
Pour rappel, la partie 1 était publié ici et la page regroupant tous les tutoriels du C++ Expressif est ici.
Voici la suite (le n° 6) de la série des tutoriels sur le C++ Expressif : C++ Expressif - La composition de fonctions.
Pour rappel, la partie 1 était publié ici et la page regroupant tous les tutoriels du C++ Expressif est ici.
Tutoriel très intéressant, mis à part ces affreux typedef à bannir en C++.
Après quand à le mettre en pratique, tout cela me parait particulièrement verbeux et particulièrement compliqué ce qui ne rend pas ce type de programmation très attractif.
On n'écrit plus typedef int MyInt; mais using MyInt = int;.
Je pense que c'est de là que vient la remarque de RPGamer
Il y a un effort dans le standard pour rendre les mécanismes du langage statiquement évaluable (ça n'entre pas dans ce cadre mais le constexpr en est un exemple), compatibles avec les templates et pour systématiser un typage en rvalue et non plus en lvalue (introduction de using et auto). Exemple pour le dernier cas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 auto x = 42; auto y = 42f;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 auto var = init; auto f() { ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 auto var = type{init}; auto f() -> type;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 using alias = type; template<class T> using alias = type<T>;
Salut,
En fait, l'usage de typedef est déprécié depuis l'arrivée de C++11 (qui date quand même d'il y a 5 ans, ou presque ) au profit de l'utilisation de using qui apporte d'avantage de flexibilité.
L'idée de base du comité est de nous permettre de définir des alias template, ou, si tu préfères, des alias de type sur (par exemple) des spécialisations partielles de classes template nécessitant plusieurs paramètres template. Ainsi, nous pouvons créer un alias de type template nommé Brol sous une forme proche deEt, grâce à cela, nous pourrions utiliser Brol<char> bc;ou Brol<unsigned int> bui; en sachant que cela correspondrait effectivement à UnType<char, std::string> bc (respectivement UnType<unsigned int, std::string> bui;).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 template <typename T> using Brol = UnType<T, std::string>;
Or, typedef est un mot clé issu du C et que l'on ne pouvait décemment pas modifier la manière dont il se comporte sans apporter de très sérieuses incompatibilités supplémentaires. C'est la raison pour laquelle le comité a décidé d'utiliser un autre mot clé (qui existait d'ailleurs déjà). Et, comme les possibilités offertes par le mot clé using recouvrent celle de typedef, il semblait "logique et cohérent" d'inciter les gens à préférer using à typedef.
Si bien que, à termes, l'utilisation de typedef a de grandes chances d'être rendue totalement obsolète (ne l'est-il déjà pas en C++14 d'ailleurs ), même si ce mot clé restera très certainement dans le langage "juste pour assurer la compatibilité avec C".
merci à tous pour vos réponses
je me coucherais moins con ce soir!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager