15 nouvelles fonctionnalités supportées par le compilateur
Alors qu'ils sont en retard par rapport à leurs concurrents que sont GCC et Clang, la dernière version de VC++ apporte le support de plusieurs fonctionnalités sur les deux langages C et C++.
Au menu du C++ :
- le mot clé explicit qui permet d'éviter les conversions implicites non désirées ;
- les chaînes de caractères litérales brutes ;
- les arguments par défaut pour les fonction templates ;
- les constructeurs délégués ;
- l'initialisation uniforme avec les accolades {} ;
- l'initialisation lors de la déclaration des attributs membres non statiques ;
- les spécifications = default et = delete ;
- les alias via using ;
- les variadics templates ;
- bonus C++14 – pour une fois qu'ils sont en avance saluons-les ! – les foncteurs en diamant.
Pour le C99 — ce qui soulève tout de même un petit sourire en coin quand on sait que le langage C en est à sa norme C11 — on est tout de même ravi de voir enfin des fonctionnalités qui nous semblent désormais faire partie des bases même du C :
- la déclaration des variables dans les blocs, ce qui permet de ne plus être forcé de les déclarer au début de la fonction ;
- le type _Bool et sa macro bool dont il n'est plus utile de rappeler l'utilité tant elle est commune ;
- les littéraux composés qui permettent d'initialiser une structure avec une série d'attributs entre accolades ;
- les initialisateurs nommés qui permettent d'initialiser des attributs particuliers d'une structure en spécifiant leurs noms (n'existe pas en C++):
Code : Sélectionner tout 1
2
3
4
5
6
7
8
9
10struct C { int attr_a; int attr_b; int attr_c; }; struct C my_c = {.attr_a = 33, .attr_c = 26};//attr_b = 0 int array[][2] = {[0][0] = 1, [1][1] = 1};//2x2, autres valeurs à 0
Source : ISO C++ Additions in Visual C++
Et vous,
Utilisez-vous VC++ ?
Pensez-vous qu'il va pouvoir rattraper ses concurrents pour C++14 ?
Pensez-vous qu'il s'agisse d'un bon compilateur pour développer en C ?