2016-04-23 10 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>; 

もののちょうど標準ライブラリには何が使用することを好みます。自分の名前を紹介するのは混乱します。

関連する問題