Youpie, gcc 6.1 a débarqué dans Debian! C'est une excellente occasion pour se plonger dans les nouveautés du standard. Parlons donc d'une fonctionnalité que j'avais complètement zappé, les "folding expression". L'idée est de fournir du sucre syntaxique pour permettre d'appliquer certains opérateurs à l'ensemble des paramètres variadiques d'une fonction. Dit comme ça, cela semble assez abstrait, mais puisque comme disait Napoléon, un petit bout de code vaut mieux que de grands discours, voici un exemple.
L'idée est donc d'écrire une fonction qui peut prendre un nombre quelconque d'arguments, et en retourner la somme. Avec une "folding expression", rien de plus simple! La syntaxe est un peu absconse, "(... [operator] args)" (ne pas oublier les parenthèses!), mais ça fait le boulot.
#include <iostream> template<typename ...ARGS> int variadicAdd(ARGS... args) { return (... + args); } int main() { std::cout << variadicAdd(3, 2, 7, 8, 4, 5) << std::endl; return 0; }
Comme vous voyez, c'est tout bête. L'on aurait pu coder la même fonctionnalité avec des appels récursifs, mais c'est quand même beaucoup plus succinct comme ça. L'on peut "replier" les expressions avec tout un tas d'opérateurs, et j'attends avec impatience de voir ce que l'on va inventer avec cette construction.
Aucun commentaire:
Enregistrer un commentaire