我想在編譯時換一個可變參數模板的兩個參數:如何在編譯時交換可變參數模板的兩個參數?
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_ ?
};
使用情況應該是:
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
我無法弄清楚什麼是正確的寫作方式Swap_Data
。
我該如何做一個遞歸交換交換可變參數和轉換成std ::數組在編譯時?
入住這https://github.com/Manu343726/Turbo/blob/reboot/bind.hpp – Manu343726
像'INT swapped_arr [] = {unswapped_arr [N == swap_pair :: First? swap_pair :: Second:N == swap_pair :: Second? swap_pair :: First:N] ...};'你有一個未打開元素的數組;你也可以使用一個'integer_sequence'和'get(seq)'函數。 –
dyp
[Live example](http://coliru.stacked-crooked.com/a/df8eac60c18156bc) – dyp