10
votes

Comment puis-je remplacer un élément de tuple au moment de la compilation?

existe-t-il un moyen de remplacer un élément de tuple à Temps de compilation fort>?

Par exemple, P>

using a_t = std::tuple<std::string,unsigned>;  // start with some n-tuple
using b_t = element_replace<a_t,1,double>;     // std::tuple<std::string,double>
using c_t = element_replace<b_t,0,char>;       // std::tuple<char,double>


0 commentaires

3 Réponses :


5
votes

1 commentaires

Pendant un bon conseil ... Cela manque également sérieusement de viande. Les réponses uniquement des liaisons sont fronça les fronzées, veuillez vous abstenir de poster de tels.



0
votes

Vous pouvez accéder aux types d'éléments d'un type de tuple à l'aide de std :: tuple_element . Cela ne vous permet pas de remplacer les types d'éléments de tuple, mais il vous permet de définir des types de tuples en termes de types utilisés comme types d'éléments dans d'autres types de tuple.


0 commentaires

19
votes

Vous pouvez utiliser ceci: xxx

puis l'utiliser comme ceci: xxx


2 commentaires

+1 - juste une correction mineure: je pense que vous avez besoin tuple dans std :: tuple_size ?


@ kfmfe04: D'oh! Bien sûr, l'avait eu dans mon code de test et j'ai oublié de modifier. Fixe maintenant!