2016-04-23 25 views
0

以下作品的包裝類型,但我覺得它必須在不訴諸使用的函數返回類型decltype可能:更換參數包

typedef std::size_t SizeT; 

    template<SizeT... Indices> struct IndexList { }; 

    template<SizeT... Is> 
    constexpr decltype(auto) ExtractIndices(std::integer_sequence<SizeT, Is...>) 
    { 
     return IndexList<Is...>{ }; 
    } 

    template<SizeT N> 
    using MakeIndexSequence = std::make_integer_sequence<SizeT, N>; 

    template<SizeT N> 
    using MakeIndexList = decltype(ExtractIndices(MakeIndexSequence<N>{ })); 

有沒有更好的方式來改變「包裝類型「的參數包?

回答

1

既然你只是別名std::index_sequence,你可能只是做更明確:

template<SizeT... Indices> 
using IndexList = std::index_sequence<Indices...>; 

template<SizeT N> 
using MakeIndexList = std::make_index_sequence<N>; 

雖然更願意只使用什麼標準庫。介紹你自己的名字是令人困惑的。