あなたがC++ 14で大丈夫ならここで明示的な戻り値の型を持つfunc
とfunc_impl
のC++ 11のバージョンがありますソリューション、Ryan's answerは行く方法です。
はC++ 11を使用すると、次の操作を行うことができます(まだindex_sequence
に基づいての、それはC++ 11に実装可能です):それと
template <size_t N, class T, class = std::make_index_sequence<N>>
struct n_tuple;
template <size_t N, class T, size_t... Is>
struct n_tuple<N, T, std::index_sequence<Is...>> {
template <size_t >
using ignore = T;
using type = std::tuple<ignore<Is>...>;
};
template <size_t N, class T>
using n_tuple_t = typename n_tuple<N, T>::type;
:
template <size_t N>
n_tuple_t<N, int> func() {
return n_tuple_t<N, int>{};
}
これまで何を試みましたか? – user2079303
必須: 'std :: array'だけを使っていると考えていますか?タプル( 'std :: tuple_size'、' std :: get'など)とよく似た '配列'を使うことができ、これを多く単純化します。 –
@ user2079303私の直感では、型のリストを保持し、Nから0までカウントダウンし、カウンタを減分するときにintをリストに追加します。 Nが0の場合、そのタプルを型リストで返します。しかし、私はそれを実行する方法を知らない。 – yuefengz