由于我没有能够找到这样的功能(错误?),我试图做一个编译时功能(constexpr)函数,该函数std::array<T,n> arr和T t,并返回一个新的std::array<T,n+1>以t添加到年底arr.我开始用这样的东西:
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};
}
在这里我卡住了.我需要的是一种在初始化列表a的第一个n位置展开的方法,然后添加t添加结束.那可能吗?还是有另一种方法吗?
Die*_*ühl 16
当然,有可能:std::index_sequence<I...>是你的朋友!您只需调度到一个函数,该函数接受一个合适的std::index_sequence<I...>参数并使用所有值扩展包.例如:
template <typename T, std::size_t N, std::size_t... I>
constexpr std::array<T, N + 1>
append_aux(std::array<T, N> a, T t, std::index_sequence<I...>) {
    return std::array<T, N + 1>{ a[I]..., t };
}
template <typename T, std::size_t N>
constexpr std::array<T, N + 1> append(std::array<T, N> a, T t) {
    return append_aux(a, t, std::make_index_sequence<N>());
}