Sto cercando di scambiare due parametri di un modello variadic in fase di compilazione:Come scambiare due parametri di un modello variadico al momento della compilazione?
template<int...Numbers>struct sequence{};
template<size_t first,size_t second>
struct Swap_Pair
{
const static size_t First = first;
const static size_t Second = second;
};
template <int...Numbers,class swap_pair>
struct Swap_Data
{
static std::array<int, sizeof...(Numbers)> data_;//How to swap Numbers base on the pair and store it in data_ ?
};
Il caso d'uso dovrebbe essere:
sequence<1, 2, 3, 4, 5, 6> array;
auto result = Swap_Data < array, Swap_Pair<2, 5> > ::data_;
//result is now std::array which contains 1 2 6 4 5 3
io non riesco a capire che cosa è il corretto modo di scrivere Swap_Data
.
E come posso fare uno scambio ricorsivo per lo scambio di parametri variadici e la conversione in std :: array in fase di compilazione?
Scegli questa https://github.com/Manu343726/Turbo/blob/reboot/bind.hpp – Manu343726
Qualcosa di simile a 'int swapped_arr [] = {unswapped_arr [N == swap_pair :: Primo? swap_pair :: Secondo: N == swap_pair :: Secondo? swap_pair :: First: N] ...}; 'dove si ha una matrice degli elementi non modificati; potresti anche usare alcuni 'integer_sequence' con una funzione' get (seq) '. –
dyp
[Esempio dal vivo] (http://coliru.stacked-crooked.com/a/df8eac60c18156bc) – dyp