J'aime bien l'idée mais j'y vois pas mal d'inconvénients :)
Je plussois sur l'intérêt de documenter le site d'appel, mais en l'état on n'a plus les noms ni les types des paramètres dans la signature de l'appelé.
Second problème, l'appelé est forcément template. Ais-je envie d'augmenter mes temps de compilation pour pouvoir nommer les paramètres côté appelant ? Probablement non.
Comment passer des paramètres par adresse ? Combien de copies des paramètres sont faites entre l'appelant et l'appelé ? Sur cet exemple j'ai déjà une copie superflue :
#include"../include/params14.hpp"#include<cstdio>usingnamespaceparams14::literals;intcopy_count=0;intassign_count=0;structcopy_counter{intvalue;copy_counter(intv):value(v){}copy_counter(constcopy_counter&that):value(that.value){++copy_count;}copy_counter&operator=(constcopy_counter&that){value=that.value;++assign_count;return*this;}};template<typename...KWArgs>voidfoo(KWArgs&&...kwargs){autoargs=params14::parse(std::forward<KWArgs>(kwargs)...);printf("value=%d\n",args.get("p"_kw).value);}voidbar(constcopy_counter&p){printf("value=%d\n",p.value);}intmain(intargc,char**argv){copy_counterp(argc);foo("p"_kw=p);printf("named:\ncopies=%d\nassignments=%d\n",copy_count,assign_count);copy_count=0;assign_count=0;bar(p);printf("good old syntax:\ncopies=%d\nassignments=%d\n",copy_count,assign_count);return0;}
# Moui
Posté par Julien Jorge (site web personnel) . En réponse au journal Toujours plus proche du Python avec C++. Évalué à 5.
J'aime bien l'idée mais j'y vois pas mal d'inconvénients :)