9
私はそのような関数を見つけられなかったので(間違っていますか?)、std::array<T,n> arr
とT t
をとり、コンパイル時に新しい関数を返す関数をコンパイルしようとしています(constexpr
)。 std::array<T,n+1>
がarr
の末尾に追加されています。私はこのようなものから始めました:std :: arrayに追加
template <typename T, int n>
constexpr std::array<T,n+1> append(std::array<T,n> a, T t);
template <typename T>
constexpr std::array<T,1> append(std::array<T,0> a, T t)
{
return std::array<T,1>{t};
}
template <typename T>
constexpr std::array<T,2> append(std::array<T,1> a, T t)
{
return std::array<T,2>{a[0], t};
}
ここで私は立ち往生します。私が必要とするものは、を最初のn
のイニシャライザリストに展開し、最後にt
を追加する方法です。それは可能ですか?または、これを行う別の方法がありますか?
ここ数秒で私を叩いてください:) upvote – StoryTeller
うわー、私には純粋な魔法! C++は、近年、長い道のりを歩んできました。ありがとう! – kalj
C++ 11には、 'integer_sequence'の効率的な実装が利用可能であるということを追加する価値があります。 [これは](https://gitlab.com/redistd/integer_seq/blob/master/integer_seq.h)残念ながらボックスから出てこないので。 –